Reader rdr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(rdr);
String s;
s = br.readLine();
br.close();
Scanner sc = new Scanner(System.in);
s = sc.nextLine();
System.out.print(s);
Zauważyłem, że jeśli zamknę BufferedReader
, nie będzie mógł wstawić wejście z klawiatury już jako System.in
jest w jakiś sposób zamknięty. Czy mimo to mogę zachować br.close()
(potrzebuję tego, aby usunąć plik), a następnie dodać więcej danych z klawiatury?Zamknięcie BufferedReader i System.in
usunąć jaki plik? BufferedReaders mają być powiązane z konkretnym strumieniem wejściowym. Po ich zamknięciu nie można ich ponownie użyć. – soulcheck
Ty * naprawdę * nie musisz zamykać 'br' w celu usunięcia pliku. –
Jeśli czytasz z pliku i używasz 'BufferedReader' do pewnego momentu, a następnie zamknij' BufferedReader', a następnie czytaj więcej ze strumienia plików, stracisz trochę bajtów. Te bajty są pobierane przez buforowany czytnik (w celu buforowania). Musisz znaleźć inny sposób. Dlaczego musisz przejść z podklasy Reader do skanera? Niektóre ograniczenia API? W obu przypadkach można robić różne rzeczy, na przykład za pomocą 'RandomAccessFile' i/lub niestandardowej podklasy Scanner, która może robić również rzeczy Reader. –