Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 扫描仪不时返回NoTouchElementException_Java - Fatal编程技术网

Java 扫描仪不时返回NoTouchElementException

Java 扫描仪不时返回NoTouchElementException,java,Java,根据一些博客帖子和论坛条目(例如),可以使用带\Z分隔符的扫描器来读取整个文件。正常情况下,这只适用于我的代码: log.debug("CSV-File: {} {}", csvFile.exists(), csvFile); try (Scanner scanner = new Scanner(csvFile)) { String fileContent = scanner.useDelimiter("\\Z").next(); log.debug("FileContent:

根据一些博客帖子和论坛条目(例如),可以使用带\Z分隔符的扫描器来读取整个文件。正常情况下,这只适用于我的代码:

log.debug("CSV-File: {} {}", csvFile.exists(), csvFile);
try (Scanner scanner = new Scanner(csvFile)) {
    String fileContent = scanner.useDelimiter("\\Z").next();
    log.debug("FileContent: {}", fileContent);
} catch (FileNotFoundException e) {
    e.printStackTrace();
}
但有些文件(据我所知,UTF-8中的所有文件)无法以这种方式读取,因为会引发类似这样的异常:

java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:862)
    at java.util.Scanner.next(Scanner.java:1371)
    ...
对于舒尔,我可以测试一下,是否存在如中所建议的这种元素。但是如果没有\Z,程序不会读取任何内容,这不是我的目标;我的目标是用尽可能少的代码将整个文件读入一个字符串

我发现一个条目说它无法读取整个文件:但没有条目说\Z不能出现在文件中。有谁知道为什么会发生这种情况,以及是否有解决办法


还有另一种方法可以使用
文件.readAllBytes
,并由此构造一个字符串,但因此有必要知道字符集,我不知道。在使用
扫描仪之前,请尝试使用api测试是否有东西可以读取下一个字符串标记,如:

if (scanner.hasNext()) {
   ... = scanner.next();
   ... 
}

请同时提供您的代码。您需要提供足够的信息,以便我们重现问题。代码和文件的描述很重要。就像问题中写的一样,我可以这样描述inhttp://stackoverflow.com/questions/13963240/nosuchelementexception-in-scanner 但是如果扫描仪没有下一个条目,我什么也得不到。我不明白为什么扫描仪甚至找不到一个条目,它不应该总是在文件末尾至少找到一个\\Z吗?