ZipFile zipFile = new ZipFile(file);
ZipInputStream stream = new ZipInputStream(new BufferedInputStream(new FileInputStream(file)));
ZipEntry entry = null;
List<String> filePaths = new ArrayList<String>();
while ((entry = stream.getNextEntry()) != null) {
// this will get you the contents of the file
InputStream inputStream = zipFile.getInputStream(entry);
// this add the file path to the list
filePaths.add(entry.getName());
}
public class FileTest {
public static void main() {
File[] files = new File("temp").listFiles();
for (File f : files) System.out.println(f.getName());
}
}
2条答案
按热度按时间tvmytwxo1#
jar文件是一个zip文件,因此可以使用zipinputstream读取其内容,如下所示:
你也可以做follo
w46czmvw2#
让我们看看
File
对象工作。首先,假设我们在名为filetest.java的文件中有以下代码:
编译时,javac会创建一个名为filetest.class的文件(即使Eclipse也会这样做;它只是将.class文件与.java文件放在一个单独的文件夹中。)现在,当我们运行这个程序时,它将查找与filetest.class文件位于同一文件夹中的名为“temp”的文件夹。
现在假设我们创建了一个名为filetest.jar的jar文件,并向其中添加filetest.class。现在,如果我们从jar文件运行程序,它将查找与filetest.jar文件位于同一文件夹中的名为“temp”的文件夹。换句话说,
File
只在硬盘上的文件系统中查找文件和文件夹。它完全不知道任何文件的内容,包括filetest.jar。为了读取jar文件的内容,必须找到不同的解决方案。首先,您需要了解jar文件中没有“文件”和“文件夹”这样的东西。jar文件只是一个带有一些额外特性的zip文件。根据您在这里提供的信息,我相信要解决您的问题,您需要使用java.util.zip.zipfile。我建议你从搜索教程开始,或者浏览我在这里链接的api文档。