java web,java工具类创建说明
package cn.xingoo.learn.commons;
importorg.Apache.com mons.io.fileutils;
importorg.Apache.com mons.io.filefilter.directory filefilter;
importorg.Apache.com mons.io.file filter.file file filter;
importorg.Apache.com mons.io.file filter.file filter utils;
importorg.Apache.com mons.io.filefilter.io filefilter;
import org.junit.Test;
import java.io.*;
import java.net.URL;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.zip.CRC32;
//*
* FileUtils支持许多文件操作,包括
*
*文件写入
*读取文件
*编制目录
复制文件和目录
删除文件和目录
从URL转换
*基于文件和目录集成和过滤的视图
*比较文件内容
*文件更新时间
*检查检查代码
*
* Created by xxh on 2016/11/24。
*/
公共类文件测试{
privatestaticfileparent=new file (' d ://test );
@Test
公共语音获取测试(
//获得基本信息
system.out.println (fileutils.gettempdirectory () ); //获取临时目录java.io.tmpdir,getUserDirectoryPath并返回路径字符串
system.out.println (fileutils.getuser directory () ); //获取用户的主目录user.home,getUserDirectoryPath并返回路径字符串
//以可读方式返回文件大小EB,PB,TB,GB,MB,KB or bytes
system.out.println (fileutils.bytecounttodisplaysize (1000000 ) );
system.out.println (fileutils.bytecounttodisplaysize (1);
}
@Test
public void openStream () throws IOException { ) )。
获取//文件导入和导出的文件流
//文件是目录还是不存在会导致异常
inputstream in=fileutils.open inputstream (new file ) (d://test/test1 ) );
输出流输出=fileutils.open输出流(new file (' d ://test/test2' ) );
out=fileutils.open output stream (new file (d ://test/test3),true ); //是否以其他形式添加内容
}
@Test
公共void file operation () throws IOException { )。
创建//文件,如果文件存在,则如果更新时间不存在,则创建空文件
//如何创建空文件:
//finaloutputstreamout=open output stream (file;
//Ioutils.closequietly () out;
fileutils.touch (new file (d ://test/test4) );
//比较文件内容
fileutils.content equals (new file (d ://test/test1 )、new file (d ://test/test2) );
fileutils.contentequalsignoreeol (new file (d ://test/test1 )、new file (d ://test/test2)、null //换行符
从//URL获取文件
FileUtils.to
File(new URL("file://D://test/test1"));
FileUtils.toFiles(null);
FileUtils.toURLs(new File[]{new File("D://test/test1")});
//文件拷贝
FileUtils.copyFileToDirectory(new File("/test1"),new File("/dir"),true);//第三个参数是否更新时间
FileUtils.copyFile(new File("/source"),new File("/target"),true);//TODO 阅读doCopy源码
//目录拷贝
File srcDir = new File("/source");
File destDir = new File("/target");
FileUtils.copyDirectoryToDirectory(new File("/source"),new File("/target"));
FileUtils.copyDirectory(new File("/source"),new File("/target"));
FileUtils.copyDirectory(srcDir, destDir, DirectoryFileFilter.DIRECTORY);//仅仅拷贝目录
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.copyInputStreamToFile(new FileInputStream("/test"),new File("/test"));
FileUtils.copyURLToFile(new URL("file:/test"),new File("/test"));
//删除文件
FileUtils.deleteDirectory(new File("/test"));//删除目录下所有的内容
FileUtils.deleteQuietly(new File("/test"));//如果是目录,会级联删除;不会抛出异常
//判断文件是否存在
FileUtils.directoryContains(new File("/dir"),new File("/file"));
//清除目录中的内容,不会删除该目录;
//先verifiedListFiles检查目录,检查目录是否为目录、是否存在,然后调用listFiles,如果返回null,则抛出异常
//遍历目录中的文件,如果是目录则递归删除;如果是文件则强制删除,删除失败(文件不存在或无法删除)都会抛出异常
FileUtils.cleanDirectory(new File("/dir"));//TODO verifiedListFiles
//等待一个文件xx秒,知道文件创建后才返回。每max(100,remainning)循环检查一次
while(FileUtils.waitFor(new File("/dir"),60)){}
//读取目标文件,内部调用IOUtils.toString(inputstream,"utf-8")
String str = FileUtils.readFileToString(new File("/dir"),"utf-8");
//内部调用IOUtils.toByteArray(in)
byte[] bytes = FileUtils.readFileToByteArray(new File("/dir"));
//内部调用IOUtils.readLines(in, Charsets.toCharset(encoding));
List strs = FileUtils.readLines(new File("/dir"),"utf-8");
//内部调用IOUtils.lineIterator(in, encoding)
FileUtils.lineIterator(new File("/dir"),"utf-8");
//四个参数分别为:目标文件,写入的字符串,字符集,是否追加
FileUtils.writeStringToFile(new File("/target"),"string","utf-8",true);
//write可以接受charsequence类型的数据,string,stringbuilder和stringbuffer都是实现了charsequence接口
FileUtils.write(new File("/target"),"target char sequence","utf-8",true);
FileUtils.writeByteArrayToFile(new File("/target"),"bytes".getBytes());//(file,字符数组)
FileUtils.writeByteArrayToFile(new File("/target"),"bytes".getBytes(),true);//(file,字符数组,是否追加)
FileUtils.writeByteArrayToFile(new File("/target"),"bytes".getBytes(),0,10);//(file,字符数组,起始位置,结束位置)
FileUtils.writeByteArrayToFile(new File("/target"),"bytes".getBytes(),0,10,true);//(file,字符数组,起始位置,结束位置,是否追加)
//writeLines多了一个lineEnding参数
FileUtils.writeLines(new File("/target"),"utf-8", FileUtils.readLines(new File("/target"),"utf-8"));
//强制删除
FileUtils.forceDelete(new File("/target"));
//在JVM
FileUtils.forceDeleteOnExit(new File("/target"));
//强制创建文件目录,如果文件存在,会抛出异常
FileUtils.forceMkdir(new File("/target"));
//强制创建父级目录
FileUtils.forceMkdirParent(new File("/xxxx/target"));
//如果是文件,直接读取文件大小;如果是目录,级联计算文件下的所有文件大小
FileUtils.sizeOf(new File("/target"));//返回Long
FileUtils.sizeOfAsBigInteger(new File("/target"));//返回BigInteger
FileUtils.sizeOfDirectory(new File("/target"));
FileUtils.sizeOfDirectoryAsBigInteger(new File("/target"));
//对比文件新旧
FileUtils.isFileNewer(new File("/target"),new File("/file"));
FileUtils.isFileOlder(new File("/target"), new Date());
FileUtils.checksum(new File("/target"),new CRC32());
FileUtils.checksumCRC32(new File("/target"));
FileUtils.moveDirectory(new File("/target"),new File("/file"));
FileUtils.moveDirectoryToDirectory(new File("/target"),new File("/file"),true);
FileUtils.moveFile(new File("/target"),new File("/file"));
FileUtils.moveFileToDirectory(new File("/target"),new File("/dir"),true);
FileUtils.moveToDirectory(new File("/target"),new File("/dir"),true);
FileUtils.isSymlink(new File("/target"));
}
@Test
public void findFiles(){
//返回文件的列表
List files = (List) FileUtils.listFiles(parent,new String[]{"test1","test2"},true);//TODO 重点看一下源码
//返回文件迭代器
Iterator files_iter = FileUtils.iterateFiles(parent,new String[]{"test1","test3"},true);
//把collection转换成File[]
FileUtils.convertFileCollectionToFileArray(files);
}
}