关闭 Java 中的 Scanner

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

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe

相关推荐

衢 字源 字形演变 甲骨文 金文 说文小篆
365bet线上网址

衢 字源 字形演变 甲骨文 金文 说文小篆

📅 07-09 👁️ 9772
win7如何安装IIS,三种方法任你选(图文教程)
365体育中国

win7如何安装IIS,三种方法任你选(图文教程)

📅 06-28 👁️ 9253
Windows 11为什么没有QQ图标?如何添加?
asiasports365

Windows 11为什么没有QQ图标?如何添加?

📅 06-29 👁️ 4693