鍍金池/ 教程/ Java/ Java文件教程
Java文件屬性
Java FilePermission示例
Java Externalizable實例
Java文件操作
Java文件鎖
Java文件系統(tǒng)
Java異步I/O
Java Reader/Writer
Java File實例
Java FileReader示例
Java控制臺
Java文件所有者權(quán)限
Java通道
Java ByteArrayOutputStream示例
BufferedOutputStream示例
Java FileInputStream示例
Java DataInputStream
Java BufferedInputStream
Java Jar Manifest
Java Console類示例
BufferedWriter示例
Java輸入/輸出教程
Java對象序列化
Java文件教程
Java DataInputStream類型
Java Zip字節(jié)數(shù)組
Java FileWriter示例
FileOutputStream示例
Java PrintStream
Java Scanner類
BufferedInputStream示例
Java字符集
ByteArrayInputStream示例
Java路徑操作
Java DataOutputStream
Java符號鏈接
Java FilterWriter示例
Java Jar API
BufferedReader實例
Java Pipe(管道)
Java jar文件
Java CharArrayReader示例
Java CharArrayWriter示例
Java PushbackInputStream
Java FilterReader示例
Java zip文件
Java InputStream
Java標(biāo)準(zhǔn)輸入/輸出/錯誤流
Java文件內(nèi)容和讀寫
Java FilterInputStream示例
Java內(nèi)存通道
Java路徑
Java令牌和字符串拆分
Java隨機(jī)訪問文件
Java文件樹
Java緩沖區(qū)讀寫
Java FileOutputStream
Java目錄事件
Java FilterOutputStream示例
Java DataOutputStream實例
FileDescriptor示例

Java文件教程

File類的對象是文件或目錄的路徑名的抽象表示。

創(chuàng)建文件

我們可以從以下創(chuàng)建一個File對象 -

  • 一個路徑名
  • 一個父路徑名和子路徑名
  • 一個URI (統(tǒng)一資源標(biāo)識符)

可以使用File類的以下構(gòu)造函數(shù)之一來創(chuàng)建一個文件:

File(String pathname)
File(File parent, String child)
File(String parent, String child)
File(URI uri)

如果有一個文件路徑文件名稱的字符串為test.txt,可以創(chuàng)建一個抽象路徑名稱,如下面的代碼。

File dummyFile = new File("test.txt");

名稱為test.txt的文件不必存在,以使用此語句創(chuàng)建File對象。dummyFile對象表示抽象路徑名,它可指向或可能不指向文件系統(tǒng)中的真實文件。

File類有幾個方法來處理文件和目錄。使用File對象可以創(chuàng)建新文件,刪除已存在的文件,重命名文件,更改文件權(quán)限等。

File類中的isFile()isDirectory()告訴File對象是否表示文件或目錄。

當(dāng)前工作目錄

JVM的當(dāng)前工作目錄是根據(jù)運(yùn)行java命令來設(shè)置的??梢酝ㄟ^讀取user.dir系統(tǒng)屬性來獲取JVM的當(dāng)前工作目錄,如下所示:

String  workingDir = System.getProperty("user.dir");

使用System.setProperty()方法更改當(dāng)前工作目錄。

System.setProperty("user.dir", "C:\\myDir");

要在Windows上指定C:\test作為user.dir系統(tǒng)屬性值,運(yùn)行如下所示的程序:

java -Duser.dir=C:\test your-java-class

檢查文件是否存在

可以使用File類的exists()方法檢查File對象的抽象路徑名是否存在。

boolean fileExists = dummyFile.exists();

完整源代碼如下 -

import java.io.File;

public class Main {
  public static void main(String[] argv) {
    // Create a File object
    File dummyFile = new File("dummy.txt");

    // Check for the file's existence
    boolean fileExists = dummyFile.exists();
    if (fileExists) {
      System.out.println("The dummy.txt  file exists.");
    } else {

      System.out.println("The dummy.txt  file does  not  exist.");
    }

  }
}

上面的代碼生成以下結(jié)果。

The dummy.txt  file does  not  exist.

路徑

絕對路徑是在文件系統(tǒng)上唯一標(biāo)識文件。使用規(guī)則路徑是唯一標(biāo)識文件系統(tǒng)上文件的最簡單路徑??梢允褂?code>getAbsolutePath()和getCanonicalPath()方法來分別獲得由File對象表示的絕對路徑和規(guī)范路徑。

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

public class Main {
  public static void main(String[] args) {
    printFilePath("dummy.txt");
    printFilePath(".." + File.separator + "notes.txt");
  }

  public static void printFilePath(String pathname) {
    File f = new File(pathname);
    System.out.println("File  Name: " + f.getName());
    System.out.println("File  exists: " + f.exists());
    System.out.println("Absolute Path: " + f.getAbsolutePath());

    try {
      System.out.println("Canonical Path: " + f.getCanonicalPath());
    }

    catch (IOException e) {
      e.printStackTrace();
    }
  }
}

上面的代碼生成以下結(jié)果。

File  Name: dummy.txt
File  exists: false
Absolute Path: F:\WebSite\Yiib\worksp\SingletonPattern\dummy.txt
Canonical Path: F:\WebSite\Yiib\worksp\SingletonPattern\dummy.txt
File  Name: notes.txt
File  exists: false
Absolute Path: F:\WebSite\Yiib\worksp\SingletonPattern\..\notes.txt
Canonical Path: F:\WebSite\Yiib\worksp\notes.txt

文件分隔符

不同的操作系統(tǒng)使用不同的字符來分隔路徑名中的兩個部分。例如,Windows在路徑名中使用反斜杠(\)作為名稱分隔符,而UNIX使用正斜杠(/)。

File類定義了一個名稱為分隔符Char的常量,它是系統(tǒng)相關(guān)的名稱分隔符??梢允褂?code>File.separator 字符常量作為分隔符。File.separator常量名稱作為String分隔符。
在程序中使用名稱分隔符(File.separator)使Java代碼在不同的平臺上工作。


上一篇:Java字符集下一篇:Java Console類示例