Java : File 檔案類操作

煙花再美不及伱發表於2020-12-18


學好IO, 那麼必須清除抽象類, IO 的核心組成: 五個類(File, OutputStream, InputStream, Writer, Reader)一個介面(Serializable)

在 java.io 包之中 File 類是唯一一個與檔案本身操作(檔案的建立, 刪除, 取得檔案資訊等等)有關的程式類。

File 類的基本使用

java.io.File 類是一個普通的類, 所以這個類直接例項化, 要例項化需要用到兩個構造方法:

構造方法一:

public File(String pathname)   // 路徑名稱

構造方法二:

public File(File parent,
            String child)

使用File類基本操作的方法

建立一個新檔案

public boolean createNewFile()
                      throws IOException

案例

package com.cwq.beyond;

import java.io.File;

public class test22 {
	public static void main(String[] args) throws Exception{
		File file = new File("D:\\textDemo.txt");
		file.createNewFile();
		
		
	}

}

在這裡插入圖片描述

刪除檔案

public boolean delete()

判斷檔案是否存在

public boolean exists()

案例: 編寫一個檔案的基本操作

package com.cwq.beyond;

import java.io.File;

public class test22 {
	public static void main(String[] args) throws Exception{
		File file = new File("D:\\textDemo.txt");
		if (file.exists()) {
			file.delete();
		}else {
			file.createNewFile();
		}
	}

}

上述程式碼存在問題

  1. 由於專案一般是windows開發, 在要部署在Unix 或者是 Linux 上, windows下的路徑符為"\", 而在Unix 和 Linux 下是 "/", 所以為了避免這個問題, File 類給定義了一個常量 :
    public static final String separator, 即 路徑分割符
    在這裡插入圖片描述

  2. 因為在Java裡面如果要進行檔案的處理操作是要通過本地作業系統支援的, 這之中如果操作的是同名檔案, 就有可能出現有延遲的問題。

建立目錄

public boolean mkdir()

建立多級目錄

public boolean mkdirs()

案例

package com.cwq.beyond;

import java.io.File;

public class test22 {
	public static void main(String[] args) throws Exception{
		File file = new File("D:"+File.separator+"beyond"+File.separator+"textDemo.txt");
		if (!file.getParentFile().exists()) {
			file.getParentFile().mkdir();
		}
		if (file.exists()) {
			file.delete();
		}else {
			file.createNewFile();
		}
	}

}

取得檔案資訊

在File中提供了一系列的提取檔案資訊的方法,如下

  1. 判斷目標路徑是否是檔案
public boolean isFile()
  1. 判斷目標路徑是否是目錄
public boolean isDirectory()
  1. 取得檔案大小(位元組)
public long length()
  1. 最後一次修改資訊
public long lastModified()
  1. 列出目錄中的全部組成
public File[] listFiles()

案例一

Math.pow(底數,幾次方)

package com.cwq.beyond;

import java.io.File;

class BeyMath{
	public static double round(double num, int scale) {
		return Math.round(num * Math.pow(10, scale)) / Math.pow(10, scale);
	}
}

public class test22 {
	public static void main(String[] args) throws Exception{
		File file = new File("D:"+File.separator+"textDemo.txt");
		if (file.exists() && file.isFile()) {
			System.out.println("檔案大小: "+BeyMath.round(file.length()/(double)1024/1024 , 2));
		}
	}

}

案例二

package com.cwq.beyond;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

class BeyMath{
	public static double round(double num, int scale) {
		return Math.round(num * Math.pow(10, scale)) / Math.pow(10, scale);
	}
}

public class test22 {
	public static void main(String[] args) throws Exception{
		File file = new File("D:"+File.separator+"textDemo.txt");
		if (file.exists() && file.isFile()) {
			System.out.println("檔案大小: "+BeyMath.round(file.length()/(double)1024/1024 , 2));
			System.out.println("最後一次修改日期: "+new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date(file.lastModified())));
		}
	}

}

案例三

package com.cwq.beyond;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;


public class test22 {
	public static void main(String[] args) throws Exception{
		File file = new File("D:"+File.separator);
		if (file.isDirectory() && file.exists()) {
			File[] files = file.listFiles();
			for (int x = 0; x < files.length; x++) {
				System.out.println(files[x]);
			}
		}
		
	}

}

在這裡插入圖片描述

相關文章