1. 程式人生 > >FileUtils工具類常用方法

FileUtils工具類常用方法

檔案操作工具類(FileUtils)

使用 apache 的commons-io包下的FileUtils,import org.apache.commons.io.FileUtils;

下載地址http://commons.apache.org/proper/commons-io/download_io.cgi

官方API文件http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html

靜態方法可以直接使用類名使用

maven 建立的java工程,匯入依賴

    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3.3</version>
    </dependency>

  

一、拷貝檔案

static void copyFile(File srcFile, File destFile)

Copies a file to a new location preserving the file date.

static void copyFile(File srcFile, File destFile, boolean preserveFileDate)

Copies a file to a new location.

static long copyFile(File input, OutputStream output)

Copy bytes from a File to an OutputStream.

static void copyFileToDirectory(File srcFile, File destDir)

Copies a file to a directory preserving the file date.

static void copyFileToDirectory(File srcFile, File destDir, boolean preserveFileDate)

Copies a file to a directory optionally preserving the file date.

static void copyInputStreamToFile(InputStream source, File destination)

Copies bytes from an InputStream source to a file destination.

static void copyToDirectory(File src, File destDir)

Copies a file or directory to within another directory preserving the file dates.

static void copyToDirectory(Iterable<File> srcs, File destDir)

Copies a files to a directory preserving each file's date.

static void copyToFile(InputStream source, File destination)

Copies bytes from an InputStream source to a file destination.

static void copyURLToFile(URL source, File destination)

Copies bytes from the URL source to a file destination.

static void copyURLToFile(URL source, File destination, int connectionTimeout, int readTimeout)

Copies bytes from the URL source to a file destination.

1)拷貝檔案到檔案:copyFile(File srcFile, File destFile)

		File file = new File("E:\\java\\file01\\abc雪.jpg");
		String destFilePath = "E:\\java\\file02";
		String destFileName = "abc雪02.jpg";
		try {
			FileUtils fileUtils = new FileUtils();
			//檔案拷貝到新的位置並儲存檔案的日期。
			fileUtils.copyFile(file, new File(destFilePath,destFileName));
			System.out.println("檔案拷貝成功");
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println(e.getMessage());
		}

    2)拷貝檔案到位元組輸出流。:copyFile(File input, OutputStream output)

String destFileName = "abc雪03.jpg";
//從檔案copy to an位元組輸出流。
FileUtils.copyFile(file, new FileOutputStream(new File(destFilePath,destFileName)));

3)拷貝檔案到檔案的目錄儲存檔案的日期:copyFileToDirectory(File srcFile, File destDir)

  拷貝的檔名無法自定義,和原檔名一樣

//拷貝檔案到檔案的目錄保持檔案的日期。
FileUtils.copyFileToDirectory(file, new File(destFilePath));

 

 

二、拷貝目錄及檔案

static void copyDirectory(File srcDir, File destDir)

Copies a whole directory to a new location preserving the file dates.

static void copyDirectory(File srcDir, File destDir, boolean preserveFileDate)

Copies a whole directory to a new location.

static void copyDirectory(File srcDir, File destDir, FileFilter filter)

Copies a filtered directory to a new location preserving the file dates.

static void copyDirectory(File srcDir, File destDir, FileFilter filter, boolean preserveFileDate)

Copies a filtered directory to a new location.

static void copyDirectoryToDirectory(File srcDir, File destDir)

Copies a directory to within another directory preserving the file dates.

1)將整個目錄拷貝到新位置,並保持原檔案日期:copyDirectory(File srcDir, File destDir)

     其包含檔案及子目錄檔案並保持原檔案日期

		File file = new File("E:\\java\\file01");
		String destFilePath = "E:\\java\\file03";
		try {
			//將整個目錄複製新位置,並保持原檔案日期。
			FileUtils.copyDirectory(file, new File(destFilePath));
			System.out.println("檔案目錄拷貝成功");
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println(e.getMessage());
		}

  

2)將已篩選的目錄拷貝的新位置:copyDirectory(File srcDir, File destDir, FileFilter filter)

     檔案過濾器篩選 其包含檔案及子目錄檔案 拷貝,並保持原檔案日期。

String destFilePath = "E:\\java\\file04";
//將已篩選的目錄複製,並保持原檔案日期的新位置。
FileUtils.copyDirectory(file, new File(destFilePath), new FileFilter() {
	@Override
	public boolean accept(File pathname) {
		if(pathname.isDirectory()) return true;
		else {
			boolean b1 = pathname.getName().endsWith(".txt");
			boolean b2 = pathname.getName().endsWith(".jpg");
			return b1 || b2;
		}
	}
});

  

 

三、刪除目錄及檔案

static void deleteDirectory(File directory)

Deletes a directory recursively.

static boolean deleteQuietly(File file)

Deletes a file, never throwing an exception.

static void forceDelete(File file)

Deletes a file.

1)刪除指定檔案,從不引發異常:deleteQuietly(File file)

File file = new File("E:\\java\\file04\\abc雪.jpg");
//刪除指定檔案,從不引發異常。
FileUtils.deleteQuietly(file);

2)刪除指定檔案,不存在報異常:forceDelete(File file)

		File file = new File("E:\\java\\file04\\abc雪.jpg");
		try {
			FileUtils.forceDelete(file);
			System.out.println("操作成功");
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println(e.getMessage());
		}

3)遞迴刪除目錄:deleteDirectory(File directory)

   刪除其包含檔案及子目錄檔案

		File file = new File("E:\\java\\file04\\abc雪.jpg");
		//遞迴刪除目錄。
		try {
			FileUtils.deleteDirectory(new File(destFilePath));
			System.out.println("操作成功");
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println(e.getMessage());
		}

四、清除目錄:cleanDirectory(File directory)

static void cleanDirectory(File directory)

Cleans a directory without deleting it.

 清除該目錄下的檔案及子目錄檔案而不刪除該目錄資料夾。該目錄不存在會報錯

String destFilePath = "E:\\java\\file04";
try {
	FileUtils.cleanDirectory(new File(destFilePath));
	System.out.println("操作成功");
} catch (IOException e) {
	e.printStackTrace();
	System.out.println(e.getMessage());
}

 

其他方法檢視API文件