org.apache.commons.io.FileUtils例子

jopen 10年前發布 | 56K 次閱讀 FileUtils Java開發

用apache.commons.io 中的一些方法來操作文件,會減輕程序員的很多負擔,文件操作經常會用到FileUtils這個類,今天在這里對最常用的一些方法做一個總結,當然最全面的東西,還是應該看apache.commons.io 的文檔或者示例。

contentEquals(File file1, File file2): 比較兩個文件的內容,返回他們的內容是否相同.
copyDirectory(File source, File destination):從一個文件夾拷貝內容到另外一個文件夾,包括子目錄。
copyDirectory(File source, File destination, FileFilter filter): 基本用途類似,但多了一個過濾條件,只拷貝滿足條件的文件或子文件夾,比如根據名稱,修改時間等過濾
copyFile(File srcFile, File destFile): 拷貝文件
deleteDirectory(File directory):  遞歸刪除文件夾.
getTempDirectory(): 返回系統臨時目錄.
getUserDirectory(): 返回用戶目錄.
lineIterator(File file): 返回給定文件,所有的行,可以對所有的行進行循環操作
sizeOfDirectory(File directory): 返回文件夾大小.
writeLines(File file, Collection<?> lines): 寫文件,將一個集合里的內容都寫到文件中去.

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;
import org.apache.commons.io.filefilter.SuffixFileFilter;
public class FileUtilsExample {

private static final String MAIN_PATH = "C:\\Users\\Lilykos\\Desktop\\FUExFiles\\";
public static void main(String[] args) throws IOException {

    // file1: "Hello World!"
    // file2: "Hello World!!!"
    File file1 = FileUtils.getFile(MAIN_PATH + "cmpFile1.txt");
    File file2 = FileUtils.getFile(MAIN_PATH + "cmpFile2.txt");
    System.out.println("Are cmpFile1 and cmpFile2 equal: " +
            FileUtils.contentEquals(file1, file2));


    // We can copy a whole path somewhere
    // and check if the operation was successful.
    FileUtils.copyDirectory(
            FileUtils.getFile(MAIN_PATH),                   // source
            FileUtils.getFile(MAIN_PATH + "copiedPath\\")); // destination

    System.out.println("Does the copiedPath exist: " +
            FileUtils.getFile(MAIN_PATH + "copiedPath\\").exists());


    // Copy a directory by filtering out all the txt files.
    // In the directory right now: cmpFile1.txt, cmpFile2.txt, zipFile.zip
    FileUtils.copyDirectory(
            FileUtils.getFile(MAIN_PATH),
            FileUtils.getFile(MAIN_PATH + "copiedFilterPath\\"),
            new SuffixFileFilter(".zip"));

    for (File f: FileUtils.getFile(MAIN_PATH + "copiedFilterPath\\").listFiles()) {
        System.out.println("Contents of copiedFilterPath: " + f.getName());
    }


    // Copy a file
    File copy = FileUtils.getFile(MAIN_PATH + "copyOfFile1.txt");
    FileUtils.copyFile(file1, copy);
    System.out.println("Are cmpFile1 and copyOfFile1 equal: " +
            FileUtils.contentEquals(file1, copy));


    // Right now there are these files in the MAIN_PATH.
    for (File f: FileUtils.getFile(MAIN_PATH).listFiles()) {
        System.out.println("Contents of MAIN_PATH: " + f.getName());
    }
    // Let's delete a directory and see the results.
    FileUtils.deleteDirectory(FileUtils.getFile(MAIN_PATH + "copiedFilterPath\\"));
    for (File f: FileUtils.getFile(MAIN_PATH).listFiles()) {
        System.out.println("Contents of MAIN_PATH after deletion: " + f.getName());
    }


    // Directories
    System.out.println("Temp Dir: " +
            FileUtils.getTempDirectory().getAbsolutePath());
    System.out.println("User Dir: " +
            FileUtils.getUserDirectory().getAbsolutePath());


    // Line Iterator
    LineIterator iter = FileUtils.lineIterator(file1);
    while (iter.hasNext()) {
        System.out.println("cmpFile1 lines: " + iter.next());
    }


    // Directory size
    System.out.println("Size of dir: " +
            FileUtils.sizeOfDirectory(FileUtils.getFile(MAIN_PATH)) +
            " bytes.");


    // Ways of writing lines to a file.
    File fileToWrite1 = FileUtils.getFile(MAIN_PATH + "fileToWrite1.txt");
    File fileToWrite2 = FileUtils.getFile(MAIN_PATH + "fileToWrite2.txt");

    Collection lines = new ArrayList<>();
    lines.add("Written with FileUtils!");
    lines.add("For Java Code Geeks.");

    FileUtils.write(fileToWrite1, "Written with FileUtils!");
    FileUtils.writeLines(fileToWrite2, lines);

    iter = FileUtils.lineIterator(fileToWrite1);
    while (iter.hasNext()) {
        System.out.println("fileToWrite1 lines: " + iter.next());
    }
    iter = FileUtils.lineIterator(fileToWrite2);
    while (iter.hasNext()) {
        System.out.println("fileToWrite2 lines: " + iter.next());
    }
}

}</pre>

結果如下:

Are cmpFile1 and cmpFile2 equal: false
Does the copiedPath exist: true
Contents of copiedFilterPath: zipFile.zip
Are cmpFile1 and copyOfFile1 equal: true
Contents of MAIN_PATH: cmpFile1.txt
Contents of MAIN_PATH: cmpFile2.txt
Contents of MAIN_PATH: copiedFilterPath
Contents of MAIN_PATH: copiedPath
Contents of MAIN_PATH: copyOfFile1.txt
Contents of MAIN_PATH: fileToWrite1.txt
Contents of MAIN_PATH: fileToWrite2.txt
Contents of MAIN_PATH: zipFile.zip
Contents of MAIN_PATH after deletion: cmpFile1.txt
Contents of MAIN_PATH after deletion: cmpFile2.txt
Contents of MAIN_PATH after deletion: copiedPath
Contents of MAIN_PATH after deletion: copyOfFile1.txt
Contents of MAIN_PATH after deletion: fileToWrite1.txt
Contents of MAIN_PATH after deletion: fileToWrite2.txt
Contents of MAIN_PATH after deletion: zipFile.zip
Temp Dir: C:\Users\Lilykos\AppData\Local\Temp
User Dir: C:\Users\Lilykos
cmpFile1 lines: Hello World!
Size of dir: 304 bytes.
fileToWrite1 lines: Written with FileUtils!
fileToWrite2 lines: Written with FileUtils!
fileToWrite2 lines: For Java Code Geeks.

原文地址:http://www.yihaomen.com/article/java/546.htm,

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!