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