Java 中的檔案路徑

Shikha Chaudhary 2023年1月30日 2022年4月26日
  1. 讀取 Java 檔案
  2. 在 Java 中如何指定檔案路徑
  3. 在 Java 中如何獲取檔案路徑
  4. まとめ
Java 中的檔案路徑

在 Java 中處理檔案時,指定正確的檔名以及正確的路徑和副檔名非常重要。

我們正在使用的檔案可能存在於同一目錄或另一個目錄中。根據檔案的位置,路徑名會發生變化。

本文將討論如何在 Java 中訪問和指定檔案路徑。

讀取 Java 檔案

讀取檔案意味著獲取檔案的內容。我們使用 Java Scanner 類來讀取檔案。讓我們通過一個例子來理解這一點。

我們將首先編寫一個 Java 程式來建立一個新檔案。然後我們將編寫另一個 Java 程式來為這個新建立的檔案新增一些內容。

最後,我們將讀取這個檔案的內容。請注意,本文中的所有程式都不會在線上編譯器上執行(使用正確設定路徑的離線編譯器)。

建立檔案

import java.io.File;  
import java.io.IOException;  

public class Main {
  public static void main(String[] args) {

    //Try catch block 
    try {
      
      //Creating a file with the name demofile.txt
      File myFile = new File("demofile.txt"); 

      if (myFile.createNewFile()) {
        System.out.println("The file is created with the name: " + myFile.getName());
      } else {
        System.out.println("The file already exists.");
      }
    } catch (IOException x) {
      System.out.println("An error is encountered.");
      x.printStackTrace();
    }
  }
}

輸出:

The file is created with the name: demofile.txt

該檔案在 Java 檔案所在的同一目錄中建立。所有 Java 程式檔案都在 C 目錄中。

向檔案中新增一些內容

import java.io.FileWriter;   
import java.io.IOException;  

public class Main {
  public static void main(String[] args) {
    try {
      //create an object
      FileWriter writeInFile = new FileWriter("demofile.txt");

     //Adding content to this file
      writeInFile.write("We are learning about paths in Java.");

      writeInFile.close();
      System.out.println("Successfully done!");
    } catch (IOException x) {
      System.out.println("An error is encountered.");
      x.printStackTrace();
    }
  }
}

輸出:

Successfully done!

讀取檔案

import java.io.File;  
import java.io.FileNotFoundException;  
import java.util.Scanner;  //scanner class for reading the file

public class Main {
  public static void main(String[] args) {
    try {
      File myFile = new File("demofile.txt");
      
      //create the scanner object
      Scanner readFile = new Scanner(myFile);

      while (readFile.hasNextLine()) {
        String data = readFile.nextLine();
        System.out.println(data);
      }
      readFile.close();
    } catch (FileNotFoundException x) {
      System.out.println("An error occurred.");
      x.printStackTrace();
    }
  }
}

輸出:

We are learning about paths in Java.

請注意,在這裡,在 File() 方法中,我們只傳遞檔名及其副檔名。

我們沒有指定 demofile.txt 的完整路徑。demofile.txt 存在於我們儲存所有這些 Java 程式檔案的同一目錄和資料夾中。

但是,如果 demofile.txt 存在於另一個目錄或資料夾中,則讀取該檔案並不是那麼簡單。在這種情況下,我們指定檔案的完整路徑。

要獲取有關 Java 檔案系統的更多詳細資訊,請參閱此文件

在 Java 中如何指定檔案路徑

為了指定檔案的路徑,我們在 File() 方法中傳遞檔名及其副檔名。我們這樣做。

new File("demofile.txt")

請注意,僅當檔案與工作專案的目錄位於同一資料夾中時,檔名才足夠。否則,我們必須指定檔案的完整路徑。

如果你不知道檔名,請使用 list() 方法。此方法返回當前目錄中所有檔案的列表。

java.io 庫的 File 類中,list() 方法以陣列的形式返回所有檔案和目錄的列表。它返回的輸出基於抽象路徑名定義的當前目錄。

如果抽象路徑名不表示目錄,則 list() 方法返回 null。有時,我們不知道檔案的位置。

此外,當我們必須讀取的檔案不在當前工作目錄中時,就會發生錯誤。使用檔案的完整路徑可以更好地避免這些問題。

要獲取檔案的確切路徑,請使用下面給出的方法。

在 Java 中如何獲取檔案路徑

當我們不知道檔案的路徑時,可以使用 Java 的一些方法來查詢檔案的路徑。然後,我們可以將此路徑名指定為引數。

Java 提供三種型別的檔案路徑 - absolutecanonicalabstractjava.io.file 類具有三種查詢檔案路徑的方法。

在 Java 中使用 getPath() 方法獲取檔案路徑

getPath() 方法屬於 Java 的 File 類。它以字串形式返回抽象檔案路徑。

抽象路徑名是 java.io.file 的物件,它引用磁碟上的檔案。

語法:

file.getPath()

例子:

import java.io.*;
public class Main {
    public static void main(String args[]){
        try {
                  //create an object
                  File myFile = new File("demo.txt"); 

                  //call the getPath() method
                  String path = myFile.getPath();
                  System.out.println("The path of this file is: " + path);
	}
       catch (Exception e) {
	      System.err.println(e.getMessage());
	}
	}
}

輸出:

The path of this file is: demo.txt

正如你在上面的輸出中看到的,只有帶有副檔名的檔名是輸出。這表明該檔案存在於 Java 程式檔案所在的同一資料夾中。

在 Java 中使用 getAbsolutePath() 方法獲取檔案路徑

getAbsolutePath() 方法返回一個字串作為檔案的絕對路徑。如果我們使用絕對路徑名建立檔案,那麼 getAbsolutePath() 方法會返回路徑名。

但是,如果我們使用相對路徑建立物件,getAbsolutePath() 方法會根據系統解析路徑名。它存在於 Java 的 File 類中。

語法:

file.getAbsolutePath()

請注意,絕對路徑是給出系統中存在的檔案的完整 URL 的路徑,與它所在的目錄無關。另一方面,相對路徑給出檔案到當前目錄的路徑。

例子:

//import the java.io library
import java.io.*;

public class Main {
    public static void main(String args[])
        {
             // try catch block
	     try {
                      // create the file object
		      File myFile = new File("pathdemo.txt");

		      // call the getAbsolutePath() method
		      String absolutePath = myFile.getAbsolutePath();

		      System.out.println("The Absolute path of the file is: "+ absolutePath);
		 }
	     catch (Exception e) {
		      System.err.println(e.getMessage());
		 }
	}
}

輸出:

The Absolute path of the file is: C:\Users\PC\pathdemo.txt

請注意,這次我們獲得了完整的工作路徑,從當前工作目錄開始到檔案所在的當前資料夾。

因此,當你不知道任何檔案的位置時,請使用絕對路徑方法來查詢檔案所在的位置。然後,你可以在必須讀取該檔案時指定該路徑。

這樣,很容易找到要讀取的檔案。

在 Java 中使用 getCanonicalPath() 方法獲取檔案路徑

Path 類中的存在返回檔案的規範路徑。如果路徑名是規範的,則 getCanonicalPath() 方法返回檔案的路徑。

規範路徑始終是唯一且絕對的。此外,此方法刪除任何 或路徑中的 ..

語法:

file.getCanonicalPath()

例子:

//import the java.io library
import java.io.*;

public class Main {
    public static void main(String args[])
        {
	    // try catch block
	    try {
                     // create the file object
		     File myFile = new File("C:\\Users");

		     // call the getCanonicalPath() method
		     String canonical = myFile.getCanonicalPath();

		     System.out.println("The Canonical path is : "+ canonical);
		}
	    catch (Exception x) {
			System.err.println(x.getMessage());
		}
	}
}

輸出:

The Canonical path is:C:\Users

要閱讀有關 Java 中路徑的更多資訊,請參閱此文件

まとめ

在本文中,我們瞭解瞭如何在必須讀取檔案時指定檔案的路徑。我們還研究了 Java 提供的各種方法,如 getPath()getAbsolutePath()getCanonical() 路徑來獲取檔案的路徑。

此外,我們看到了路徑如何根據檔案和當前專案的目錄和資料夾而變化。我們還建立並讀取了一些檔案作為演示。

但是,這些程式不會在線上編譯器上執行。

相關文章 - Java File

相關文章 - Java Path