關閉 Java 中的 Scanner

Rupam Yadav 2023年10月12日
  1. 在 Java 中在列印完使用者的標準輸入後,關閉一個 Scanner
  2. 在列印一個指定的字串後關閉 Java 中的 Scanner
  3. 在 Java 中使用 close() 方法讀取檔案內容後關閉 Scanner
關閉 Java 中的 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

在這個例子中,我們將使用\nnextLine() 把字串 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 Yadav
Rupam Yadav avatar Rupam Yadav avatar

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

相關文章 - Java Scanner