繁体   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