Создал два объекта fileOne и fileTwo. Оба читают из файла, оба имеют одинаковые методы. В чем между ними разница и какой предпочтительнее использовать для чтения из файла? Благодарю.
BufferedReader fileOne = new BufferedReader(
new InputStreamReader(
new FileInputStream(reader.readLine())));
System.out.println(fileOne.readLine());
fileOne.close();
BufferedReader fileTwo = new BufferedReader(new
FileReader(reader.readLine()));
System.out.println(fileTwo.readLine());
fileTwo.close();
Если вы откроете исходный код класса FileReader и посмотрите его, достаточно даже строки объявления класса и первого конструктора, то поймете, что это просто обертка для первой вашей конструкции. FileReader - наследник InputStreamReader, а в конструкторе он создает тот же FileInputStream.
Собственно, вот исходный код FileReader:
public class FileReader extends InputStreamReader {
public FileReader(String fileName) throws FileNotFoundException {
super(new FileInputStream(fileName));
}
public FileReader(File file) throws FileNotFoundException {
super(new FileInputStream(file));
}
public FileReader(FileDescriptor fd) {
super(new FileInputStream(fd));
}
}
Рекомендую почаще заглядывать в исходный код используемых классов, так можно много полезного узнать.
Не совсем ответ на вопрос, но позвольте предложить Вам "более современный" подход чтения файлов из пакета NIO 2:
Path path = Paths.get("file.txt");
List<String> lines = Files.readAllLines(path);
Использую его всегда. (8-я джава)
Продвижение своими сайтами как стратегия роста и независимости