在 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.
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe