CommonsIO
常用方法:
//文件大小
long len = FileUtils.sizeOf(new File(“src/01.png”));
System.out.println(len);
//目录大小
len = FileUtils.sizeOf(new File(“src”));
System.out.println(len);
//列出子孙级
// Collectionfiles = FileUtils.listFiles(new File(“src”), EmptyFileFilter.NOT_EMPTY,null);//EmptyFileFilter.NOT_EMPTY 过滤空文件
// Collectionfiles = FileUtils.listFiles(new File(“src”), EmptyFileFilter.NOT_EMPTY, DirectoryFileFilter.INSTANCE);//EmptyFileFilter.NOT_EMPTY 过滤空文件 ,DirectoryFileFilter.INSTANCE 表示操作子孙级
// Collectionfiles = FileUtils.listFiles(new File(“src”), new SuffixFileFilter(“java”), DirectoryFileFilter.INSTANCE);//EmptyFileFilter.NOT_EMPTY 过滤空文件 ,DirectoryFileFilter.INSTANCE 表示操作子孙级
Collectionfiles = FileUtils.listFiles(new File(“src”), FileFilterUtils.or( new SuffixFileFilter(“java”),new SuffixFileFilter(“txt”)),DirectoryFileFilter.INSTANCE);//过滤只剩下尾缀为java或者txt的 ,DirectoryFileFilter.INSTANCE 表示操作子孙级
for (File f:files
) {
System.out.println(f.getName());
System.out.println(f.getAbsolutePath());
}
//读取文件
String msg = FileUtils.readFileToString(new File(“src/ac.txt”),“UTF-8”);
System.out.println(msg);
byte [] bytes =FileUtils.readFileToByteArray(new File(“src/ab.txt”));
System.out.println(bytes.length);
//逐行读取
List msg = FileUtils.readLines(new File(“src/ac.txt”),“UTF-8”);
for (String m:msg
) {
System.out.println(m);
}
//写出文件
try {
FileUtils.write(new File(“src/ao.txt”),“学习是杀”,“UTF-8”);
FileUtils.writeStringToFile(new File(“src/ao.txt”),“白给”,“UTF-8”,true);
FileUtils.writeByteArrayToFile(new File(“src/ao.txt”),“学习是杀”.getBytes(“UTF-8”),true );
//写出列表
List list = new ArrayList<>();
list.add(“黑虎”);
list.add(“万豪”);
list.add(“劲夫”);
FileUtils.writeLines(new File(“src/ab.txt”),list,"././.",true);
文件拷贝:
//复制文件
FileUtils.copyFile(new File(“src/01.png”),new File(“src/ac.png”));//将"src/01.png"拷贝到"src/ac.png"
//复制文件到目录
FileUtils.copyFileToDirectory(new File(“src/ac.png”),new File(“src/demp”));
//复制目录到目录(后面的成为前面的子目录)
FileUtils.copyDirectoryToDirectory(new File(“src/demp”),new File(“lib”));
//把"src/demp"目录中的内容放到lib中
FileUtils.copyDirectory(new File(“src/demp”),new File(“lib”));
//拷贝URL内容
FileUtils.copyURLToFile(new URL(“https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=2498573709,3848842188&fm=26&gp=0.jpg”),new File(“src/sd.jpg”));
FileUtils.copyURLToFile(new URL(“https://www.baidu.com/”),new File(“src/百度.txt”));
//获取到Url中的内容
String datas = IOUtils.toString(new URL(“https://www.baidu.com/”),“UTF-8”);
System.out.println(datas);
总结:
1.数据方面分析:字节流和字符流 中间存在转换流
2.流向方面分析:输入流和输出流
3.操作节点:节点流、操作节点之上的:处理流/装饰流(为了对节点流性能提升)
文件拷贝(重点)
Object 序列化、反序列化