让我们看看File
对象是如何工作的。
首先,假设我们在名为 FileTest.java 的文件中有以下代码:
public class FileTest {
public static void main() {
File[] files = new File("temp").listFiles();
for (File f : files) System.out.println(f.getName());
}
}
当我们编译它时,javac 会创建一个名为 FileTest.class 的文件。(即使 Eclipse 也会这样做;它只是将 .class 文件与 .java 文件放在一个单独的文件夹中。)现在,当我们运行这个程序时,它会查找与 FileTest 位于同一文件夹中的名为“temp”的文件夹.class 文件。
现在假设我们创建了一个名为 filetest.jar 的 JAR 文件并将 FileTest.class 添加到其中。现在,如果我们从 JAR 文件中运行程序,它将查找与filetest.jar文件位于同一文件夹中的名为“temp”的文件夹。换句话说,File
仅在硬盘驱动器上的文件系统中查找文件和文件夹。它对任何文件的内容一无所知,包括 filetest.jar。
为了读取 JAR 文件的内容,您必须找到不同的解决方案。首先,您需要了解在 JAR 文件中没有“文件”和“文件夹”之类的东西。JAR 文件只是一个带有一些额外功能的 ZIP 文件。到目前为止,根据您在此处提供的信息,我相信要解决您的问题,您将需要使用java.util.zip.ZipFile。我建议您首先在谷歌上搜索教程或浏览我在此处链接的 API 文档。