• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[JAVA] Zamykanie scannera.

VPS Starter Arubacloud
+2 głosów
3,072 wizyt
pytanie zadane 3 czerwca 2015 w Java przez shaguene Nowicjusz (140 p.)

Witam!

Zaczynam swoją przygodę z programowaniem w Javie. Podczas swojej nauki napotkałem się na problem "Resource leak: 'NazwaScannera' is never closed". Po chwilowym przeszukiwaniu internetu, napotkałem się, że rozwiązuje ten problem metoda NazwaScannera.close(); i o to pytanie - czy przez użycie tego rozwiązania, tracę jakieś dane, lub coś tego rodzaju? Z góry dziękuje za odpowiedź i życzę miłego dnia użytkownikom tego forum smiley

PS. Jeżeli to coś zmieni, to IDE którego używam to Eclipse.

1 odpowiedź

+1 głos
odpowiedź 3 czerwca 2015 przez Harsay Pasjonat (23,640 p.)
public class Program {
	
	public static void main(String[] args) throws FileNotFoundException
	{
	     String string = "Zawartosc stringu.";
	     File file = new File("test.txt");
	     Scanner scanner;
	     
	     scanner = new Scanner(string);
	     System.out.println(scanner.nextLine());
	     scanner.close();
	     
	     scanner = new Scanner(string);
	     System.out.println(scanner.nextLine());
	     scanner.close();
	     	     
	     scanner = new Scanner(file);
	     System.out.println(scanner.nextLine());
	     scanner.close();
	     
	     scanner = new Scanner(file);
	     System.out.println(scanner.nextLine());
	     scanner.close();

	     scanner = new Scanner(System.in);
	     System.out.println(scanner.nextLine());
	     scanner.close();
	     
	     scanner = new Scanner(System.in);
	     System.out.println(scanner.nextLine());
	     scanner.close();
	}

}

Co w takim przypadku wyrzuca konsola.

Zawartosc stringu.
Zawartosc stringu.
Zawartosc pliku test.txt
Zawartosc pliku test.txt
ok <-- podane przez uzytkownika
ok
Exception in thread "main" java.util.NoSuchElementException: No line found
	at java.util.Scanner.nextLine(Unknown Source)
	at zelent.Program.main(Program.java:37)

Metoda close() w klasie Scanner powoduje zamknięcie wejścia jeżeli źródło posiada interfejs Closable.
W tym wypadku zamykamy źródło, którym jest Scanner.in i uniemożliwia nam to odczytanie wejścia jeżeli się do niego odwołamy.

Podobne pytania

0 głosów
1 odpowiedź 1,256 wizyt
pytanie zadane 3 maja 2018 w Java przez FroGiS Użytkownik (810 p.)
0 głosów
1 odpowiedź 1,067 wizyt
pytanie zadane 23 października 2016 w Java przez pawelgp Początkujący (350 p.)
0 głosów
2 odpowiedzi 348 wizyt

92,963 zapytań

141,928 odpowiedzi

321,161 komentarzy

62,297 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...