簡體   English   中英

Java 中有沒有辦法讀取文本文件中的換行符?

[英]Is there a way in Java to read new line characters in a text file?

我正在實施霍夫曼編碼程序。 我對整本書進行編碼和解碼,因此找到換行符非常重要,但不幸的是我忽略了一些東西。 目前,我使用一種方法將小書讀入一個String然后返回,見下圖:

private String readFile(String filename) {
    String curLine;
    String toReturn = "";
    try {
        BufferedReader reader = new BufferedReader(new FileReader(filename));
        try {
            while ((curLine = reader.readLine()) != null) {
                toReturn += curLine;
            }
        } catch (IOException e) {
            System.out.println(e);
        }
    } catch (FileNotFoundException e) {
        System.out.println(e);
    }
    return toReturn;
}

這適用於常規字符,但不適用於換行符之類的東西(我知道這些類型的“字符”有一個詞,但我現在正在空白中)。 無論如何,我的問題是如何更改當前方法以同時拾取 newLine 字符,或者我是否需要做一些完全不同的事情。 由於這個原因,我懷疑 readLine() 現在對我沒有好處,但我想在這里檢查一些輸入。

我的程序中的其他一切都很好,但是沒有考慮換行符這一事實弄亂了我的整個霍夫曼樹,我相信你明白從那里發生的事情。 任何關於我可以做些什么來拾取換行符的建議都將不勝感激。 謝謝!

您可以像這樣讀取文件中的所有字符。

static String readFile(String filename) throws IOException {
    return Files.readString(Path.of(filename));
}

它讀取為 UTF-8,但如果需要,您可以使用readString()的第二個參數指定編碼。

正如上面評論中所建議的,您需要一種面向字節的方法。

java 7開始,您可以使用Files.readAllBytes(filepath)方法。 您可以通過這種方式將整個文件內容作為字符串傳遞;

new String(Files.readAllBytes(filepath));

java 11 開始,您現在可以選擇使用Files.readString(filepath)來更漂亮地完成相同的操作。

您可以參考此博客,了解將整個文件讀取為 String 的更詳細選項,包括BufferedReader https://howtodoinjava.com/java/io/java-read-file-to-string-examples/

我猜你正在尋找來自番石榴核心庫的 Files.toString() 。

String content = Files.toString(new File("sample_file.txt"), Charsets.UTF_8);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM