Метод close
Метод close класса Scanner
закрывает сканер и освобождает все ресурсы, связанные с ним.
Если сканер был создан на основе потока ввода (например, System.in),
то после вызова метода close этот поток также будет закрыт.
Метод не принимает параметров и не возвращает значения.
После закрытия сканера попытка вызвать методы чтения
(например, next или nextLine) приведет к исключению
IllegalStateException.
Синтаксис
scanner.close()
Пример
Давайте создадим сканер для чтения из строки и закроем его после использования:
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner scanner = new Scanner("abcde");
String res = scanner.nextLine();
System.out.println(res);
scanner.close();
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте проверим, что после закрытия сканера
вызов метода next приводит к исключению:
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner scanner = new Scanner("12345");
scanner.close();
try
{
String res = scanner.next();
System.out.println(res);
}
catch (IllegalStateException e)
{
System.out.println("Scanner is closed");
}
}
}
Результат выполнения кода:
"Scanner is closed"
Пример
Давайте закроем сканер, созданный на основе System.in,
и убедимся, что повторный вызов close безопасен:
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
scanner.close();
scanner.close();
System.out.println("Scanner closed");
}
}
Результат выполнения кода:
"Scanner closed"
Смотрите также
-
класс
Scanner,
который читает данные из различных источников -
метод
next,
который читает следующее слово -
метод
nextLine,
который читает следующую строку -
метод
useDelimiter,
который задает разделитель для сканера