根據一些博客帖子和論壇條目(例如http://www.java-tips.org/java-se-tips/java.util/scanning-text-with-java.util.scanner-3.html),可以使用掃描儀和\ Z作爲分隔符來讀取整個文件。 Normaly,這只是爲我工作,此代碼:掃描程序不時返回NoSuchElementException
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)
...
對於舒爾,我可以測試,天氣有這樣一個元素,就像NoSuchElementException in Scanner中建議的那樣。但如果沒有\ Z,程序不會讀取任何內容,這不是我的目標;我的目標是用盡可能少的代碼將整個文件讀入一個字符串。
我發現一個條目說這不能讀取整個文件:http://closingbraces.net/2011/12/17/scanner-with-z-regex/但沒有條目說\ Z不能出現在文件中。有誰知道爲什麼會發生這種情況,並且天氣有一個解決方法?
會有替代使用Files.readAllBytes
,並從中構建一個字符串,但因此它是必要的知道字符集,我不知道。
請提供您的代碼。 – EvenLisle
您需要爲我們提供足夠的信息來重現問題。代碼和文件的描述是至關重要的。 – CandiedOrange