關閉 Java 中的 Scanner
-
在 Java 中在列印完使用者的標準輸入後,關閉一個
Scanner
-
在列印一個指定的字串後關閉 Java 中的
Scanner
-
在 Java 中使用
close()
方法讀取檔案內容後關閉Scanner
在本教程中,我們將學習如何在 Java 中關閉 Scanner,以及何時應該使用它。Scanner
類有一個 close()
方法,特別是用來關閉開啟的 Scanner。即使我們不顯式呼叫 close()
方法,也會呼叫 Closeable
介面,關閉流。顯式關閉 Scanner 是一個很好的做法。
下面的例子顯示了我們如何以及何時可以使用 Scanner.close()
方法。
在 Java 中在列印完使用者的標準輸入後,關閉一個 Scanner
在下面的程式碼中,我們已經建立了一個 Scanner
物件 in
,它在建構函式中從使用者那裡接收 System.in
標準輸入。方法 nextLine()
返回跳過的輸入。它讀取整個輸入行,直到行尾,包括空格和行分隔符。
輸入的內容被列印出來,然後我們通過呼叫 close()
方法關閉 Scanner
物件 in
。當 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
在這個例子中,我們將使用\n
和 nextLine()
把字串 s
分成不同的行。\n
用來表示新的行,當 scanner.nextLine()
注意到新的行時,它移動到新行,然後列印出來。這樣輸出的時候,s
中的三個科目都在不同的行中。
這種情況下,我們可能需要呼叫 close()
方法,因為我們不希望 scanner
再掃描任何新行。
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 中使用 close()
方法讀取檔案內容後關閉 Scanner
建議我們在讀取檔案時,總是關閉 Scanner
。它可以確保沒有開啟任何輸入或輸出流,而這些流沒有被使用。下面的例子顯示了我們如何從檔案中讀取一個字串,然後在操作完成後關閉 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