2014-10-07 2 views
1

Рассматривая учебные пособия по Java, кажется, вам нужно обернуть несколько слоев объектов при объявлении сканера, например. http://docs.oracle.com/javase/tutorial/essential/io/scanning.htmlОбъявление сканера для чтения system.in

s = new Scanner(new BufferedReader(new FileReader("xanadu.txt"))); 

имеет как BufferedReader и FileReader. Однако, если я читаю от System.in, мне нужно/есть ли какое-либо преимущество для этого? Имеют ли две опции поведение по-другому?

Scanner s = new Scanner(new BufferedReader(new InputStreamReader(
      System.in))); 

против

Scanner s = new Scanner(System.in); 
+1

В то время как буферизация может помочь с большими файлами, я не вижу никакого преимущества в использовании его с помощью ввода с клавиатуры ('System.in'). И только для того, чтобы предотвратить будущие проблемы, при открытии 'Scanner' для' System.in' либо закрывайте его в самом конце вашего кода (после того, как все прочитано) или вообще не закрываются. –

+0

'System.in' может также поступать из файла с использованием перенаправления – kichik

ответ

1

Разница в эффективности. При правильном использовании BufferedReader предотвращает чтение байтов, считанных из файла, в символы, а затем возврат их обратно. Поэтому рекомендуется использовать BufferedReader.

Кроме того, вы можете указать размер буфера, что очень удобно.

Смежные вопросы