我有一個 jar,它有一個包含檔案夾的資源檔案夾,我們稱之為toplevel. toplevel包含另一個檔案夾,名為level1. level1然后包含目錄串列。我想將這些目錄作為java.io.File物件檢索,以便另一個函式可以對這些 File 物件執行操作。使用下面的示例,List<File>就像List{dira, dirb, dirc}如何做到這一點?
toplevel
---level1
------dir a
------dir b
------dir c
uj5u.com熱心網友回復:
我建議從 jar 檔案中提取匹配的條目并保存到一個臨時位置以獲取 java.io.File 參考。
選項1:
如果您從檔案系統讀取,請使用 ZipFile 讀取檔案,然后使用 ZipFile.getEntry("zip-path") 獲取條目并使用 Files.copy 保存
請參閱: 
參見示例實作:
- https://github.com/nfet/java-zip-demo/blob/7dbdba9c47e0773f959d740d62fbb63949eaca94/src/main/java/com/example/jar/demo/ReadJarFile.java
<script src="https://gist.github.com/nfet/27fce2870b8cd42e3337f6a21b8e9711.js"></script>
uj5u.com熱心網友回復:
感謝大家的幫助,但經過一番折騰,找到了一個解決方案,該解決方案可以在之前的解決方案https://stackoverflow.com/a/1529707/9486041 上作業, 以縮小檔案夾及其內容的范圍。
JarURLConnection connection = (JarURLConnection) folderURL.openConnection()
JarFile jar = new JarFile(new File(connection.getJarFileURL().toURI()))
Enumeration enumEntries = jar.entries();
while (enumEntries.hasMoreElements()) {
JarEntry file = (JarEntry) enumEntries.nextElement();
if (!file.name.startsWith(path "/")) {
continue
}
File f = new File(System.getProperty("user.home") "/tmp" File.separator file.getName());
f.getParentFile().mkdirs()
InputStream is = jar.getInputStream(file); // get the input stream
FileOutputStream fos = new FileOutputStream(f);
while (is.available() > 0) { // write contents of 'is' to 'fos'
fos.write(is.read());
}
fos.close();
is.close();
}
jar.close()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/386198.html
