java 在bufferedreader 为什么要先new一下要读入的文件

File file = new File(“PersonFile.txt”);
String line;
Person p;
int numberPeople;
try {
 BufferedReader fr = new BufferedReader(new FileReader(file));
 while ((line = fr.readLine()) != null) {
 p = new Person(line);
 listOfPeople.add(p);
 }
 fr.close();
 numberPeople = listOfPeople.size();
} catch (IOException e) {
}

如果已经有了那个文件了,为什么还要new一下

BufferedReader in
= new BufferedReader(new FileReader("foo.in"));
看api文旦 里面要接收一个字符流

可以熟悉下装饰者模式,Java IO用了装饰者模式,BufferedReader是装饰者,需要传入被装饰的对象,BufferedReader本身不具备获取流的功能的,还是通过传入的流(比如FileInputStrean)来获取数据,然后加上了一个缓冲功能即装饰,这也是它的装饰功能