1

我正在使用 BufferedReader 读取 java 中的文件。

以下是代码片段:

String line;
br = new BufferedReader(new FileReader("file1.txt"));
while ((line = br.readLine()) != null) {
    System.out.println(line);
}
//Here I want to open file named "file2.txt".

正如上面剪断的代码中提到的,我现在想打开一个新文件。

最好的方法是什么?

我应该先使用 br.close 关闭 br,然后再初始化 br 还是什么?

PS:我是Java新手。

4

4 回答 4

4

创建方法将使您的代码模块化且易于使用。这将导致代码的可重用性和易于理解。这是示例代码:

public static void main(String args[]) {
    readFile("C:\\sample.txt");
}

public static void readFile(String filename) {
    BufferedReader br = null;

    try {

        String sCurrentLine;

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

        while ((sCurrentLine = br.readLine()) != null) {
            System.out.println(sCurrentLine);
        }

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (br != null)br.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}
于 2013-05-25T06:25:25.327 回答
2

我会做一个方法并调用它两次

void readFile(String fileName) throws IOException {
     try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
         ...
     }
}

请注意,BufferedReader实例br将自动关闭,并确保您为此使用 JDK 7

于 2013-05-25T06:23:15.797 回答
0

文件 I/O 操作在内部使用装饰器模式。因此,.close()在最外层的对象上应该关闭所有内部 I/O

于 2013-05-25T06:24:46.783 回答
0

是的,先关闭它,但使用这种模式......

BufferedReader br = null;
String line;
try {
  br = new BufferedReader(new FileReader("file1.txt"));
  while ((line = br.readLine()) != null) {
      System.out.println(line);
  }
}
finally {
    if (br != null) br.close();
}
//Here I want to open file named "file2.txt".

或者,try-with-resources方法(语义上等同于上述)...

String line;
try (BufferedReader br = new BufferedReader(new FileReader("file1.txt")) {
  while ((line = br.readLine()) != null) {
      System.out.println(line);
  }
}
//Here I want to open file named "file2.txt".
于 2013-05-25T06:42:30.213 回答