3

我正在尝试从 .jar 文件的根目录加载一个文本文件。我尝试过这样的事情:

InputStream is = getClass().getResourceAsStream("/infobook.txt");
Scanner scan = new Scanner(is);
ArrayList<String> strings = new ArrayList<String>();
while(scan.hasNextLine())
{
    strings.add(scan.nextLine());
}

我没有得到任何运行时异常,但是,ArrayList 中没有添加任何行。然后我尝试了类似的东西System.out.println(scan.nextLine());,但我遇到了一个java.util.NoSuchElementException: No line found例外。现在我很困,需要你的帮助。文本文件有 21 行文本。我将如何从 jar 中加载此文本文件?

[编辑] 我也尝试过像这样读取输入流:

InputStream is = getClass().getResourceAsStream("/infobook.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(is));
System.out.println(br.readLine());

给出以下错误:java.util.zip.ZipException: invalid stored block lengths

4

4 回答 4

2

我会检查你的类路径中没有一个文件(你不期望的)是空的。尝试打印

// print where the file is found.
System.out.println(getClass().getResource("/infobook.txt"));
于 2013-01-07T20:30:07.863 回答
0

我试图创建类似的场景,但我一直成功运行。但即使你给出错误的文件名,它也会产生不同的异常。我的意思是扫描仪无法读取它

于 2013-01-07T20:33:21.237 回答
0

可能是字符集问题;明确选择此项。

Scanner scan = new Scanner(is, "Windows-1252");
于 2013-01-07T20:35:36.350 回答
0

如果您将来要查看此内容 - 如果您在 OSX 上,请尝试更新您的 java.lang. 这对我有用,也可能对你有用。否则,请尝试下面/上面的其他答案。

于 2013-01-07T21:47:32.367 回答