首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Apache Commons IO 核心功能速查:文件操作、複製、刪除與讀取

     編輯:Java 相關知識

簡介

Apache Commons IO 提供了豐富的工具類,極大地簡化了 Java 中繁瑣的 I/O 操作。本文整理了文件複製、寫入、刪除、讀取等常用場景的代碼範例,助你快速上手。

核心工具類

  • FileUtils:文件/目錄操作(複製、刪除、讀寫、大小轉換等)
  • IOUtils:流操作(複製、關閉、轉換等)

實戰範例

A. 文件內容拷貝與寫入

package demo;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import java.io.*;

public class FileCopyExample {
    public static void main(String[] args) {
        try {
            // 1. 文件複製到文件
            File src = new File("test.dat");
            File dest = new File("test.dat.bak");
            FileUtils.copyFile(src, dest);

            // 2. 文件複製到目錄
            File dir = new File("./temp");
            FileUtils.copyFileToDirectory(src, dir);

            // 3. 字符串寫入文件(指定編碼)
            String content = "Blah blah blah";
            FileUtils.writeStringToFile(new File("test.tmp"), content, "ISO-8859-1");

            // 4. 輸入流複製到 Writer
            Writer writer = new FileWriter("test.dat");
            InputStream in = FileCopyExample.class.getResourceAsStream("/demo/web.xml");
            IOUtils.copy(in, writer);
            writer.close();
            in.close();

            // 5. 輸入流複製到 OutputStream
            File srcFile = new File("test.txt");
            OutputStream out = new FileOutputStream(srcFile);
            InputStream in2 = FileCopyExample.class.getResourceAsStream("/demo/web.xml");
            IOUtils.copy(in2, out);
            in2.close();
            out.close();

        } catch (IOException e) {
            System.err.println("I/O 操作失敗: " + e.getMessage());
        }
    }
}

B. 文件刪除與大小顯示

package demo;

import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;

public class FileDeleteExample {
    public static void main(String[] args) {
        try {
            File file = new File(FileDeleteExample.class.getResource("/demo/web.xml").getFile());
            // 友好顯示文件大小
            String display = FileUtils.byteCountToDisplaySize(file.length());
            System.out.println("web.xml 大小: " + display);

            // 強制刪除(即使是目錄或只讀文件)
            FileUtils.forceDelete(file);
            System.out.println("刪除成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

C. 逐行讀取文本文件

package demo;

import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.util.List;

public class FileReadExample {
    public static void main(String[] args) throws IOException {
        File file = new File(FileReadExample.class.getResource("/demo/web.xml").getFile());
        // 一次性讀取所有行到 List(注意大文件記憶體風險)
        List<String> lines = FileUtils.readLines(file, "UTF-8");
        for (String line : lines) {
            System.out.println(line);
        }
    }
}

最佳實踐提醒

  • 大文件讀取建議使用 FileUtils.lineIterator() 逐行處理,避免 OOM。
  • 流複製時,IOUtils.copy() 內部已處理緩衝,效率較高。
  • 資源關閉建議使用 try-with-resources (Java 7+) 或 IOUtils.closeQuietly()。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved