关闭 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