Java でスキャナを閉じる
-
ユーザからの標準入力を出力した後に Java で
Scannerを閉じる -
Java で改行文字を含む指定された文字列を出力した後に
Scannerを閉じる -
Java でファイルの内容を読み込んだ後に
Scannerを閉じるにはclose()メソッドを使用する
このチュートリアルでは、Java でスキャナを閉じる方法と、それを使用するタイミングについて学習します。Scanner クラスには、開いたスキャナを閉じるためのメソッド close() が用意されています。たとえ明示的に close() メソッドを呼び出さなくても、Closeable インターフェースが呼び出されてストリームが閉じられます。スキャナを明示的に閉じるのは良い習慣です。
以下に、Scanner.close() メソッドをいつどのように使うかを示す例を示します。
ユーザからの標準入力を出力した後に Java で Scanner を閉じる
以下のコードでは、コンストラクタでユーザからの標準入力 System.in を受け取る Scanner オブジェクト in を作成しています。メソッド nextLine() はスキップされた入力を返します。これは空白や行区切り文字を含めて、入力の行全体を行末まで読み取ります。
入力が出力された後、Scanner オブジェクト in の close() メソッドを呼び出して Scanner を閉じる。Scanner が閉じた後、myString2 のように in を使いたい場合は、ストリームまたは Scanner が閉じられているため例外が発生します。
import java.util.Scanner;
public class CloseScanner {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter a String: ");
String mystring = in.nextLine();
System.out.println("The String you entered is: " + mystring);
in.close();
String myString2 = in.nextLine();
System.out.println(myString2);
}
}
出力:
Enter a String: the cat is white
The String you entered is: the cat is white
Exception in thread "main" java.lang.IllegalStateException: Scanner closed
at java.base/java.util.Scanner.ensureOpen(Scanner.java:1150)
at java.base/java.util.Scanner.findWithinHorizon(Scanner.java:1781)
at java.base/java.util.Scanner.nextLine(Scanner.java:1649)
at com.company.Main.main(Main.java:20)
Java で改行文字を含む指定された文字列を出力した後に Scanner を閉じる
この例では、文字列 s を \n と nextLine() を用いて行に分割します。scanner.nextLine() は、新しい行に気づくと、新しい行に移動してそれを出力します。このようにして、出力は s の中の 3つのサブジェクトすべて異なる行になっています。
これは、scanner にこれ以上の改行をスキャンさせたくないために close() メソッドを呼び出したくなる状況の一つです。
import java.util.Scanner;
public class CloseScanner {
public static void main(String[] args) {
try {
String s = " English \n Maths \n Science ";
Scanner scanner = new Scanner(s);
System.out.println(scanner.nextLine());
System.out.println(scanner.nextLine());
System.out.println(scanner.nextLine());
scanner.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
出力:
English
Maths
Science
Java でファイルの内容を読み込んだ後に Scanner を閉じるには close() メソッドを使用する
ファイルを読み込んでいるときは常に Scanner を閉じることを推奨します。これにより、使用されていない入出力ストリームが開かれないことを確実にします。次の例は、ファイルから String を読み込み、操作が終わったら scanner を閉じる方法を示しています。
import java.io.File;
import java.util.Scanner;
public class CloseScanner {
public static void main(String[] args) {
try {
File file = new File("/Users/john/Documents/Example.txt");
Scanner scanner = new Scanner(file);
StringBuffer sb = new StringBuffer();
while (scanner.hasNext()) {
sb.append(" " + scanner.nextLine());
}
System.out.println(sb);
scanner.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
出力:
Hello, You are in a text file.
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn