【发布时间】:2014-03-12 11:25:58
【问题描述】:
[编辑] 我找到了答案,但由于对新用户的限制,我无法回答这个问题。无论哪种方式,这都是 Java 中的一个已知错误。
http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8028387
我正在尝试在 64 位 ubuntu 上将文件读入 Java 6 中的字符串。 Java 给我一个非常奇怪的结果,"\\Z" 它读取整个文件,但"\\z" 它读取整个字符串最多 1024 个字符。我已经阅读了所有类的 Java 6 API,但我不知所措。
\Z 和 \z 的说明见:
http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html#lt
什么可能导致这种奇怪的行为?
String fileString = new Scanner(new File(fileName)).useDelimiter("\\z").next();
String fileString2 = new Scanner(new File(fileName)).useDelimiter("\\Z").next();
System.out.println("using Z : " + fileString2.length());
System.out.println("Using z "+ fileString.length());
输出: 使用 Z : 9720 使用 z : 1024
谢谢!
有关文件/java-version 的详细信息:
使用 java-6-openjdk-amd64 运行 Ubuntu(也使用 oracle java6 进行了测试) 文件是 UTF-8 编码的简单文本文件。
【问题讨论】:
-
我已经为你完成了 :-)
-
好的。由于您撤消了我的编辑...您可以改进您的问题如下:1)删除“谢谢”。表达感谢的最佳方式是支持相关答案并接受最好的答案。 2) 删除 "First time poster ..." 的东西。这不是您的主要问题的一部分,我们可以判断您是否是第一次发帖。如果您特别希望人们对您的问题发表评论,请在评论中询问 cmets。
-
如果你向我们展示了输入文件的样子,你也可以帮助人们回答......因为人们在复制它时遇到了问题。请注意,您接受的答案只是一个理论。我怀疑它是否是真正的解释,因为如果是,那将是一个简单的 Java 错误,而简单的 Java 错误在野外很少见。 (人们往往比这更早找到它们。)
-
嗯……我的意思是 / 是标准 Java 类库中的一个简单错误。
-
谢谢斯蒂芬 - 我会重做你的编辑。我没有注意到这是对您的编辑,只是以为我以某种方式弄乱了我的问题的提交。我的输入是带有 UTF-8 编码的简单文本文件。该错误出现在所有文件中。例如,一个仅由 a 组成的文件(没有新行/空格等)。我会更多地查看文件并更新我的问题。谢谢。
标签: java character-encoding eof