關閉 Java 中的 Scanner

Rupam Yadav 2023年1月30日 2020年12月19日
  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.
Author: 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