FileUtils常用方法 - commons-io常用工具类

FileUtils常用常量

public static final long ONE_KB = 1024;
 
public static final BigInteger ONE_KB_BI = BigInteger.valueOf(ONE_KB);
 
public static final long ONE_MB = ONE_KB * ONE_KB;
 
public static final BigInteger ONE_MB_BI = ONE_KB_BI.multiply(ONE_KB_BI);
 
private static final long FILE_COPY_BUFFER_SIZE = ONE_MB * 30;
 
public static final long ONE_GB = ONE_KB * ONE_MB;
 
public static final BigInteger ONE_GB_BI = ONE_KB_BI.multiply(ONE_MB_BI);
 
public static final long ONE_TB = ONE_KB * ONE_GB;
 
public static final BigInteger ONE_TB_BI = ONE_KB_BI.multiply(ONE_GB_BI);
 
public static final long ONE_PB = ONE_KB * ONE_TB;
 
public static final BigInteger ONE_PB_BI = ONE_KB_BI.multiply(ONE_TB_BI);
 
public static final long ONE_EB = ONE_KB * ONE_PB;
 
public static final BigInteger ONE_EB_BI = ONE_KB_BI.multiply(ONE_PB_BI);
 
public static final BigInteger ONE_ZB = BigInteger.valueOf(ONE_KB).multiply(BigInteger.valueOf(ONE_EB));
 
public static final BigInteger ONE_YB = ONE_KB_BI.multiply(ONE_ZB);
 
public static final File[] EMPTY_FILE_ARRAY = new File[0];

FileUtils常用方法

FileUtils.getFile => 获取指定文件

File file = FileUtils.getFile("D://test/test1/123.txt");

FileUtils.getFile => 获取指定目录下的:"lalala.txt", "lalala2.txt"

File file1 = FileUtils.getFile(new File("D://test/test1"), "123.txt", "456.txt");

FileUtils.getTempDirectoryPath => 获取临时目录 File对象

File tempDirectory = FileUtils.getTempDirectory();

FileUtils.getTempDirectoryPath => 获取临时目录路径字符串

System.out.println(FileUtils.getTempDirectoryPath());
// C:\Users\han\AppData\Local\Temp\

FileUtils.getUserDirectory  => 获取用户主目录 File对象

File userDirectory = FileUtils.getUserDirectory();

FileUtils.getUserDirectoryPath  => 获取用户主目录路径字符串

System.out.println(FileUtils.getUserDirectoryPath());
// C:\Users\Administrator

FileUtils.byteCountToDisplaySize  => 以可读的方式,返回文件的大小EB, PB, TB, GB, MB, KB or bytes

System.out.println(FileUtils.byteCountToDisplaySize(10000000)); // 9 MB
System.out.println(FileUtils.byteCountToDisplaySize(1)); // 1 bytes

FileUtils.sizeOf => 读取文件大小

FileUtils.sizeOf(new File("D://test/test1"));//返回Long
FileUtils.sizeOfAsBigInteger(new File("D://test/test1"));//返回BigInteger

FileUtils.sizeOfDirectory => 目录,级联计算文件下的所有文件大小

FileUtils.sizeOfDirectory(new File("D://test/test1"));//返回Long
FileUtils.sizeOfDirectoryAsBigInteger(new File("D://test/test1"));//返回BigInteger

FileUtils.copyDirectory => 复制文件夹(文件夹里面的文件内容也会复制)

String filePath1 = "D://test/test1" ;
File srcDir = new File( filePath1 ) ;
 
String filePath2 = "D://test/test2" ;
File destDir = new File( filePath2 ) ;
 
try {
    //复制文件夹
    FileUtils.copyDirectory(srcDir, destDir);
} catch (IOException e) {
    e.printStackTrace();
}

FileUtils.copyDirectoryToDirectory => 此方法将目录1所有的文件夹及文件复制到目录2下,如果有同名文件夹则合并,如果有同名文件则替换

try {
    //复制文件夹
    FileUtils.copyDirectoryToDirectory(srcDir, destDir);
} catch (IOException e) {
    e.printStackTrace();
}

FileUtils.copyDirectory => 复制文件夹,带有文件过滤功能

try {
    ///仅仅拷贝目录
    FileUtils.copyDirectory(srcDir, destDir, DirectoryFileFilter.DIRECTORY);
} catch (IOException e) {
    e.printStackTrace();
}
 
IOFileFilter txtSuffixFilter = FileFilterUtils.suffixFileFilter(".txt");// 创建.txt过滤器
IOFileFilter txtFiles = FileFilterUtils.andFileFilter(FileFileFilter.FILE, txtSuffixFilter);
// 创建包含目录或者txt文件的过滤器
FileFilter filter = FileFilterUtils.orFileFilter(DirectoryFileFilter.DIRECTORY, txtFiles);
// Copy using the filter
FileUtils.copyDirectory(srcDir, destDir, filter);//TODO 阅读doCopyDirectory源码

FileUtils.openInputStream => 获取文件输入流

InputStream in = FileUtils.openInputStream(new File("D://test/test1"));

FileUtils.openOutputStream =>  获取文件输出流

OutputStream out = FileUtils.openOutputStream(new File("D://test/test2"));
out = FileUtils.openOutputStream(new File("D://test/test3"), true);//是否追加的形式添加内容

FileUtils.touch => 创建文件,如果文件存在则更新时间;如果不存在,创建一个空文件

FileUtils.touch(new File("D://test/test4"));

FileUtils.contentEquals => 文件内容的对比

FileUtils.contentEquals(new File("D://test/test1"), new File("D://test/test2"));
FileUtils.contentEqualsIgnoreEOL(new File("D://test/test1"), new File("D://test/test2"), null);//忽略换行符,第三个参数是字符集

FileUtils.toFile => 根据URL获取文件

//FileUtils.toFile(URL url)使用相对路径创建一个File对象
String data = FileUtils.readFileToString(FileUtils.toFile(
        AjavaURLToFile.class.getResource("/ajava.txt")));
System.out.println("data = " + data);
 
 
//FileUtils.toFile(URL url)使用绝对路径创建一个File对象
File file = FileUtils.toFile(new URL("file://D:/ajavademo.txt"));
data = FileUtils.readFileToString(file);
System.out.println("data = " + data);

FileUtils.toFiles => 根据多个URL获取多个文件文件,返回File[]数组

// File[] toFiles(final URL[] urls) 
FileUtils.toFiles(null);

FileUtils.toURLs => 文件地址转为URL

FileUtils.toURLs(new File[]{new File("D://test/test1")});

FileUtils.copyFileToDirectory => 此方法将b文件夹下的123.txt拷贝到指定文件夹下,如果有同名文件则替换,前者没有报错,后者没有新建

FileUtils.copyFileToDirectory(
        new File("C://Users/han/Desktop/新建文件夹/123/123.txt"),
        new File("C://Users/han/Desktop/新建文件夹/456")
);

FileUtils.copyFile => 此方法将b文件夹下a.doc拷贝到mm下a.doc,前者不存在会报错,后者不存在会新建,如果后者存在同名文件则替换

FileUtils.copyFile(new File("d:/b/a.doc"), new File("d:/b/mm/a.doc"));
FileUtils.copyFile(new File("d:/b/a.doc"), new File("d:/b/mm","a.doc"));//与上边功能一样

FileUtils.copyInputStreamToFile => 此方法将输入流的内容复制到新文件

FileUtils.copyInputStreamToFile(new FileInputStream("D://test/test1"), new File("D://test/test1"));

FileUtils.copyUrlToFile => 此方法URL对应的文件复制一份

FileUtils.copyURLToFile(new URL("file:/test"), new File("D://test/test1"));

 

上一篇:vue项目el-upload移动端ios手机拍照上传相册旋转90度的问题修复


下一篇:java – Apache FileUtils.copyDirectory(…)的进度条