簡體   English   中英

是否可以僅使用FileReader從文件讀取?

[英]Is it possible read from a file using only FileReader?

我知道正確的方法是

BufferedReader br = new BufferedReader(FileReader(file));

但是我在Java API中檢查了FileReader類的方法,並且它具有read()方法,該方法返回讀取的字符。 但這對我不起作用。 我正在讀取包含以下文本行的文件:“我正在讀取文件”,並將其打印到屏幕上,但是當我運行程序時,它將為每個字符打印等效的ASCII代碼。

這是我的代碼:

String lectura = "";
try{
    lectura = String.valueOf(fr.read());
} catch(IOException ioex){
    ioex.printStackTrace();
}

while((Integer.parseInt(lectura)) != -1){
    System.out.print(lectura);
    try{
        lectura = String.valueOf(fr.read());
    } catch(IOException ioex){
        ioex.printStackTrace();
    }
}

這是怎么回事-

fr.read()返回一個整數而不是一個字符,盡管返回的整數是該字符的等效ASCII碼。

當您對該整數調用String.valueOf()時,將調用String.valueOf(int i)方法,而不是您希望被調用的String.valueOf(char c)方法,因此它將返回ASCII值作為字符串,而不是字符值作為字符串。

因此,請嘗試

    lectura = String.valueOf( (char) (fr.read()) );

這是預期的行為,文本存儲為字節,每個字節都有字符的ASCII值。 您可以將這些字節收集到字節數組中,然后使用新的String(array); 將它們轉換為字符串。 或者,您可以轉換為char來轉換單個字符。

FileReader的read返回一個int 您只需要將其轉換為char

Readerread不僅返回char是,使用int使其可以使用-1表示文件結尾。

暫無
暫無

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

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