java Scanner 只读取前 2048 个字节

标签 java windows macos java.util.scanner

我正在使用 java.util.Scanner 通过以下代码从类路径中读取文件内容:

String path1 = getClass().getResource("/myfile.html").getFile();

System.out.println(new File(path1).length()); // 22244 (correct)

String file1 = new Scanner(new File(path1)).useDelimiter("\\Z").next();
System.out.println(file1.length()); // 2048 (first 2k only)

代码从 idea 使用命令运行(maven 测试)

/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home/bin/java -Dmaven.home=/usr/share/java/maven-3.0.4 -Dclassworlds.conf=/usr/share/java/maven-3.0.4/bin/m2.conf -Didea.launcher.port=7533 "-Didea.launcher.bin.path=/Applications/IntelliJ IDEA 12 CE.app/bin" -Dfile.encoding=UTF-8 -classpath "/usr/share/java/maven-3.0.4/boot/plexus-classworlds-2.4.jar:/Applications/IntelliJ IDEA 12 CE.app/lib/idea_rt.jar" com.intellij.rt.execution.application.AppMain org.codehaus.classworlds.Launcher --fail-fast --strict-checksums test

它在我的 win7 机器上运行完美。但是在我转移到 mac 之后,同样的测试失败了。 我试着用谷歌搜索,但没有找到太多 =(

为什么带有分隔符\Z 的扫描仪在 win7 上将我的整个文件读入一个字符串,但在 mac 上却不行? 我知道有更多方法可以读取文件,但我喜欢这种单行方式,并且想了解为什么它不起作用。 谢谢。

最佳答案

这里有一些来自java的关于它的信息

http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

\Z The end of the input but for the final terminator, if any

\z The end of the input

Line terminators

A line terminator is a one- or two-character sequence that marks the end of a line of the input character sequence. The following are recognized as line terminators:

A newline (line feed) character ('\n'), A carriage-return character followed immediately by a newline character ("\r\n"), A standalone carriage-return character ('\r'), A next-line character ('\u0085'), A line-separator character ('\u2028'), or A paragraph-separator character ('\u2029).

所以使用 \z 而不是 \Z

关于java Scanner 只读取前 2048 个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17312563/

相关文章:

iphone - Iphone的开发环境?

c - "BYTE_ORDER"宏在 OSX 中定义在哪里?

java - 错误: failed to open APK: Invalid offset

javascript - 为 AngularJS + Spring MVC 网站生成静态 SEO 页面

java - 在 Java Swing 中将 JMenu 对齐到 JMenuBar 的右上角

c - Windows 下的 GnuTLS API

macos - Docker 卷为空

java - 如何用java jar文件复制MySQL数据库

c# - 更改 DateTimePicker 日历运行时

linux - PE 和 ELF 二进制格式有什么区别?