Java 開啟檔案

Rupam Yadav 2023年10月12日
  1. 在 Java 中使用 Desktop 類開啟檔案
  2. 在 Java 中使用 FileInputStream 類
  3. 在 Java 中使用 BufferedReader 類開啟檔案
  4. 在 Java 中使用 Scanner 類開啟檔案
Java 開啟檔案

在 Java 中有多種開啟檔案的方法。我們將在本文中討論其中的幾種。

在 Java 中使用 Desktop 類開啟檔案

Java AWT 包有一個 Java Desktop 類,用於在本機桌面上啟動已註冊的應用程式以處理檔案或 URI。它的實現是平臺相關的;因此,有必要檢查作業系統是否支援桌面。如果沒有註冊的應用程式或無法啟動,它會丟擲 FileNotFoundException

Desktop 類具有 open() 方法,該方法啟動已註冊的應用程式以開啟它作為引數的檔案。

我們建立一個新的 File 類物件,將文字檔案的路徑作為引數傳遞。如果 Desktop.isDesktopSupported() 返回 false 如果系統不支援桌面,它會立即返回。我們獲得當前瀏覽器上下文的 Desktop 例項 desktop

我們在 file 物件上使用 exists() 方法來檢查檔案是否存在。我們呼叫 desktop.open() 在預設文字編輯器中開啟檔案。

import java.awt.*;
import java.io.File;
public class OpenFile {
  public static void main(String args[]) {
    try {
      File file = new File("/Users/john/Desktop/demo.txt");
      if (!Desktop.isDesktopSupported()) {
        System.out.println("not supported");
        return;
      }
      Desktop desktop = Desktop.getDesktop();
      if (file.exists())
        desktop.open(file);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

在 Java 中使用 FileInputStream 類

FileInputStream 類用於讀取面向位元組的資料,例如音訊、影象資料、視訊等。它還可以用於讀取字元流,因為它從檔案中獲取輸入位元組。因此它可用於開啟和讀取檔案。不過,建議使用 FileReader 類來讀取檔案。

我們建立了一個 FileInputStream fIS 來讀取我們程式碼中的檔案物件 f。我們讀取檔案的內容並將其寫入終端。在 while 迴圈中,我們讀取流的字元,直到 read() 方法返回 -1。

import java.io.File;
import java.io.FileInputStream;
public class OpenFile {
  public static void main(String args[]) {
    try {
      File f = new File("/Users/john/Desktop/demo.txt");
      FileInputStream fIS = new FileInputStream(f);
      System.out.println("file content: ");
      int r = 0;
      while ((r = fIS.read()) != -1) {
        System.out.print((char) r);
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

輸出:

file content: 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer eget quam malesuada, molestie nibh id, vestibulum libero. Vestibulum sed ligula ut ligula bibendum pharetra. Suspendisse est odio, euismod vel porta ac, dapibus at lorem. In a leo vestibulum, commodo erat eget, cursus purus. Integer hendrerit orci eu erat pretium hendrerit. Etiam dignissim tempus orci. Etiam suscipit non sapien vitae condimentum. Fusce nec molestie nulla. Cras ut vestibulum tortor. Duis velit mi, dapibus vel scelerisque vitae, sagittis vitae purus. Ut et tempus eros, id scelerisque dolor. In suscipit ante sem.

在 Java 中使用 BufferedReader 類開啟檔案

BufferedReader 類從基於字元的輸入流中讀取文字。它需要一個 reader 物件,因此我們將一個新的 FileReader 傳遞給它的建構函式。FileReader 是一個方便的類來讀取字元檔案。

BufferedReader 建立一個使用預設大小的緩衝字元輸入流。我們從流中讀取,直到 read() 方法返回 -1 並列印檔案的輸出。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
public class OpenFile {
  public static void main(String args[]) {
    try {
      File fil = new File("/Users/john/Desktop/demo2.txt");
      BufferedReader br = new BufferedReader(new FileReader(fil));
      System.out.println("file content: ");
      int r = 0;
      while ((r = br.read()) != -1) {
        System.out.print((char) r);
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

輸出:

file content:-- 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer eget quam malesuada, molestie nibh id, vestibulum libero. Vestibulum sed ligula ut ligula bibendum pharetra. Suspendisse est odio, euismod vel porta ac, dapibus at lorem. In a leo vestibulum, commodo erat eget, cursus purus. Integer hendrerit orci eu erat pretium hendrerit. Etiam dignissim tempus orci. Etiam suscipit non sapien vitae condimentum. Fusce nec molestie nulla. Cras ut vestibulum tortor. Duis velit mi, dapibus vel scelerisque vitae, sagittis vitae purus. Ut et tempus eros, id scelerisque dolor. In suscipit ante sem.

在 Java 中使用 Scanner 類開啟檔案

Java 中的 Scanner 類屬於 java.util 包。它可以使用正規表示式解析原始型別和字串,並可用於從檔案中讀取資料。我們通過在建構函式中指定檔案來建立一個 Scanner 類物件。

我們使用 hasNextLine() 方法逐行讀取檔案並列印 while 迴圈內的每一行,直到我們有下一行要從檔案中讀取。

import java.io.File;
import java.util.Scanner;
public class OpenFile {
  public static void main(String args[]) {
    try {
      File file = new File("/Users/john/Desktop/demo1.txt");
      Scanner scanner = new Scanner(file);
      while (scanner.hasNextLine()) System.out.println(scanner.nextLine());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

輸出:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer eget quam malesuada, molestie nibh id, vestibulum libero. Vestibulum sed ligula ut ligula bibendum pharetra. Suspendisse est odio, euismod vel porta ac, dapibus at lorem. In a leo vestibulum, commodo erat eget, cursus purus. Integer hendrerit orci eu erat pretium hendrerit. Etiam dignissim tempus orci. Etiam suscipit non sapien vitae condimentum. Fusce nec molestie nulla. Cras ut vestibulum tortor. Duis velit mi, dapibus vel scelerisque vitae, sagittis vitae purus. Ut et tempus eros, id scelerisque dolor. In suscipit ante sem.
作者: 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 File