我正在尋找一個對話框,能夠瀏覽到jar文件的內容(甚至更好地允許我瀏覽文件系統,然後進入jar文件)。是否有一個打開的對話框來選擇Jar內的文件?
理想情況下,對話框應該爲jar和所選資源的url返回一個類加載器。
任何人都可以指向我的一些示例代碼來做到這一點?
謝謝
我正在尋找一個對話框,能夠瀏覽到jar文件的內容(甚至更好地允許我瀏覽文件系統,然後進入jar文件)。是否有一個打開的對話框來選擇Jar內的文件?
理想情況下,對話框應該爲jar和所選資源的url返回一個類加載器。
任何人都可以指向我的一些示例代碼來做到這一點?
謝謝
你需要實現你自己的FileSystemView
,將能夠進入ZIP/JAR文件,然後通過這個實施到JFileChooser
構造函數。如果您需要更多詳細信息,請隨時提出更多問題。
我希望有一些開箱即用的東西。但這是迄今爲止最好的答案。謝謝。 – PeeWee2201 2013-02-18 08:45:58
JAR基本上是一個zip文件。您可以使用Java的標準ZIP庫打開它。
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class JarAccess
{
public static void main(String[] args) throws IOException
{
if (args.length != 1)
{
System.err.println("usage: java JarAccess name_or_your_jar.jar");
return;
}
try (ZipInputStream zis =
new ZipInputStream(new FileInputStream(args[0])))
{
byte[] buffer = new byte[4096];
ZipEntry ze;
while ((ze = zis.getNextEntry()) != null)
{
System.out.println("Extracting: "+ze);
try (FileOutputStream fos = new FileOutputStream(ze.getName()))
{
int numBytes;
while ((numBytes = zis.read(buffer, 0, buffer.length)) != -1)
fos.write(buffer, 0, numBytes);
}
zis.closeEntry();
}
}
}
}
(代碼是未經測試,但在邏輯上它應該工作)
謝謝,但我正在尋找一個對話框,顯示壓縮文件的分層內容,而不是如何讀取流中的內容。我可以自己寫所有這些,但我想這一定已經存在。請注意,您鏈接的文章結尾顯示的內容多多少少。不幸的是,它取決於JavaFX,我正在使用Swing ... – PeeWee2201 2013-02-15 13:29:19
一個jar文件是一個zip文件。 – assylias 2013-02-15 13:08:58
您可以將文件後綴更改爲.zip,並使用解壓縮將其打開。 – 2013-02-15 13:35:50