如何使用 Java 的 BufferedReader 与 InputStreamReader 读取文件?

Posted

技术标签:

【中文标题】如何使用 Java 的 BufferedReader 与 InputStreamReader 读取文件?【英文标题】:How to read a file with Java's BufferedReader vs InputStreamReader? 【发布时间】:2016-06-21 05:09:25 【问题描述】:

下面我有以下代码来读取文件并逐行浏览它。这是使用 java 的 BufferedReader 类。我觉得很好。

String filename = "C:\\test.txt"
String line = null;

FileReader fileReader = new FileReader(filename);
BufferedReader bufferedReader = new BufferedReader(fileReader);

try 
    while (((line = bufferedReader.readLine()) != null)) 

    //do the following....

   

 catch (IOException) 
    e.printStackTrace();
    

但是我现在想开始在 Spring/Java 中使用 InputStreamReader。我编写了以下代码,但我不确定如何逐行遍历我的文件。真的对这部分感到困惑。任何人有任何想法或知道如何做到这一点?

String filepath= "C:\\test.txt" 
File filename= new File(filepath);

try 
    InputStream fileInputStream = new BOMInputStream(new fileInputStream(filename));

// now want to step through the file, line by line..

 catch (IOException) 
    e.printStackTrace();
    

谢谢

【问题讨论】:

有什么理由不使用new InputStreamReader(fileInputStream) Convert InputStream to BufferedReader的可能重复 旁注:考虑使用 NIO.2 File API。 【参考方案1】:

这是您可以使用 InputStreamReader 逐字节读取输入文件的方法。

    char[] chars = new char[100];
    try 
        InputStream inputStream       = new FileInputStream("C:\\test.txt");
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"UTF-8");           
        inputStreamReader.read(chars);          
        System.out.println(new String(chars).trim());
     catch (IOException e) 
        e.printStackTrace();
    

【讨论】:

【参考方案2】:

看看这个 -

String filename = "C:\\test.txt"
String line = null;

FileInputStream fileInputStream = new FileInputStream(filename);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));

try 
    while (((line = bufferedReader.readLine()) != null)) 

    //do the following....

   

 catch (IOException) 
    e.printStackTrace();

【讨论】:

【参考方案3】:
public static void main(String[] args) 
    try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("c:\\test.txt")))) 

        reader.lines().forEach(line -> 
            // do what you want with the line
        );

     catch (IOException e) 
        throw new RuntimeException(e);
    


【讨论】:

以上是关于如何使用 Java 的 BufferedReader 与 InputStreamReader 读取文件?的主要内容,如果未能解决你的问题,请参考以下文章

java —— 异常中的陷阱

用Java对CSV文件进行读写操作

java中BufferedReader和FileReader怎么用?

android串口权限怎么加?

readLine()

华为机试题 HJ80 整型数组合并