Java 带分隔符的扫描仪\\Z";在第一次调用时没有下一个元素
你好!我使用这部分代码Java 带分隔符的扫描仪\\Z";在第一次调用时没有下一个元素,java,input,delimiter,Java,Input,Delimiter,你好!我使用这部分代码 File file = new File(someFilePath); Scanner sc; try { sc = new Scanner(file); } catch (FileNotFoundException e) { return ""; } sc.useDelimiter("\\Z"); System.out.println("file : " + file.getName() +
File file = new File(someFilePath);
Scanner sc;
try {
sc = new Scanner(file);
} catch (FileNotFoundException e) {
return "";
}
sc.useDelimiter("\\Z");
System.out.println("file : " + file.getName() + " " + sc.hasNext() + " " + sc.delimiter());
String fileString = sc.next();
在这段代码的最后一行,我在线程“main”java.util.NoTouchElementException中得到了错误异常。
输出是文件:758279215_profile.txt false\Z
,因此分隔符是正确的,文件存在(并且它不是空的,我已经检查过了),但是由于某种原因它没有下一个元素(我认为下一个元素应该是,并且应该是文件中的整个文本)。出了什么问题以及如何解决?谢谢大家!
增加:
BufferedReader br = new BufferedReader(new FileReader(file));
String line = "";
while (line != null) {
try {
line = br.readLine();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(line);
}
返回文件内容(内容编辑为JSON文本的文本文件)和null(循环的最后一次写入)可能是区域设置问题。
尝试导出LC\u ALL=en\u US.utf-8
是否可以在不设置分隔符的情况下尝试相同的代码?@dasblinkenlight-yep,输出为文件:758279215\u profile.txt false\p{javaWhitespace}+
,错误是sameIt看起来系统在不同的位置查找文件,而您正在检查该文件以确认它是否为非空。文件在那里,但它是空的。尝试System.out.println(file.length())
查看它是否为零。@dasblinkenlightfile.length()
返回1331字节什么?。。这毫无意义!您是否可以尝试在不使用扫描仪的情况下阅读该文件?您是否可以详细说明您的答案,并添加有关您提供的解决方案的更多描述?我遇到了相同的问题,我尝试用另一种方法重写此部分。编译已通过,但由于编码问题,单元测试失败。然后我尝试更改我的LC\u ALL
设置。神奇的是,现在一切都好了(有了这两个代码)。您可以检查文档中的区域设置描述。