【JavaSE】文件操作commons-io丶FileUtils丶IOUtils丶FilenameUtils

一.commons-io概述

1.jar包

二.FileUtils

1.文件创建
  • forceMkdir(File directory)'
    • 创建新文件夹,如果其祖先目录不存在,则一并创建其祖先文件夹,如果新创建的文件夹存在,则不会不会不会进行覆盖替换

    • directory参数表示是需要创建的文件夹File对象

//因为项目中不存在ABC目录,则全部都被新创建
FileUtils.forceMkdir(new File("A/B/C"));
  • forceMkdirParent(File file)
    • 根据文件对象创建所有祖先文件夹,但不会创建文件本身
    • file参数表示是文件File对象
//创建一个新的文件对象,项目中不存在DE文件夹
File file=new File("D/E/test1.txt");

//创建file对象的所有不存在的祖先目录(D文件和E文件夹,这里不会创建test1.txt)
FileUtils.forceMkdirParent(file);

//创建新文件test1.txt[createNewFile方法如果祖先目录不存在则会报错]
file.createNewFile();
  • 提炼创建新文件方法
//根据路径创建新文件(其所有祖先目录均被创建)
public static void createFile(String filePath) throws IOException {
	//根据文件路径创建一个新的文件对象
	File file=new File(filePath);
	
	//创建file对象的所有不存在的祖先文件夹
	FileUtils.forceMkdirParent(file);
	
	//创建新文件
	file.createNewFile();
}
2.文件删除
  • deleteQuietly(File file)

    • 删除文件丶删除文件夹本身及其所有子孙文件夹和文件
    • 删除失败或者发生异常程序不会抛出异常,只有返回值为true才算真正删除成功(不建议使用)
  • forceDelete(File file)

    • 删除文件丶删除文件夹本身及其所有子孙文件夹和文件
    • 删除过程中出错会抛出异常,没有返回值
    • File.delete() 区别在于被删除的文件夹不能包含子项
  • cleanDirectory(File directory)

    • 清空指定文件夹directory内的所有文件和文件夹,但不会删除directory本身
3.文件剪切
  • moveFile(File srcFile,File destFile)
    • 剪切文件并复制和重命名
    • 两个参数都只能是文件,不能是文件夹
    • 如果复制目标的文件夹不存在会自动创建
    • 如果剪切和复制都是同一个文件夹则只进行重命名操作
//被剪切的文件对象
File src=new File("D/E/test1.txt");		
//复制到目标地方的文件对象,这里F文件夹是不存在的
File des=new File("D/F/test2.txt");

//把test1.txt文件剪切到了D/F文件夹下(自动创建不存在的文件夹F),并把文件名称改为test2
FileUtils.moveFile(src, des);
  • moveDirectory(File srcDir, File destDir)
  • 剪切自身文件夹和其子项到指定文件夹并重命名
  • 两个参数都只能是文件夹,不能是文件
  • 如果复制目标的文件夹不存在会自动创建
  • 如果剪切和复制都是同一个文件夹则只进行重命名操作
//被剪切的文件夹
File srcDir=new File("D");		
//复制到目标地方的文件夹,这里K文件夹是不存在的
File desDir=new File("K/L");

//把D文件夹及其子项剪切到K文件夹下(自动创建不存在的文件夹K),并把原来的文件夹名称D改为L
//假如D里面有E/a.txt,则剪切完结果是K/L/E/a.txt
FileUtils.moveDirectory(srcDir, desDir);
  • moveToDirectory(File src, File destDir, boolean createDestDir)
    • 剪切文件或文件夹到指定文件夹中
    • 剪切文件夹是包括自身和其所有子孙文件夹或文件
    • src可以是文件或文件夹,destDir只能是文件夹
    • createDestDir参数表示destDir中某些目录不存在是否创建
//被剪切的文件
File srcFile=new File("D/E/test1.txt");		
//复制到目标地方的文件夹(不能是文件),这里F文件夹是不存在的
File desDir=new File("D/F");

//把test1.txt文件剪切到了D/F文件夹下,如果参数位true会自动创建不存在的文件夹F
FileUtils.moveToDirectory(srcFile, desDir,true);
4.文件复制
  • copyFile(File srcFile, File destFile)

    • 复制文件并重命名,目标文件夹不存在则自动创建
    • 其他跟moveFile() 事项一样
  • copyDirectory(File srcDir, File destDir)

    • 复制文件夹及其子项到指定文件夹下,目标文件夹不存在则自动创建
    • 其他跟moveDirectory() 事项一样
  • copyToDirectory(File src, File destDir)

    • 复制文件或文件夹到指定文件夹中,目标文件夹不存在则自动创建
    • 其他跟moveToDirectory() 事项一样
5.文件读取
  • readFileToString(File file, Charset encoding)
    • 以指定编码方法读取文件内容放进字符串变量中
    • 编码格式要根据文件本身的编码
//以GBK编码读取test1.txt文件内容
String str=FileUtils.readFileToString(new File("A/test1.txt"), "GBK");
  • List<String> readLines(File file, String encoding)
    • 用指定编码格式读取文件的每行内容进一个字符串中,最终返回一个字符串集合
//以UTF-8编码读取test1.txt文件内容,把每行内容放进一个字符串中,读完所有行就返回一个字符串集合
List<String> list=FileUtils.readLines(new File("A/test1.txt"), "UTF-8");
6.文件写入
  • writeStringToFile(File file, String data, String encoding, boolean append)
    • 以指定编码格式打开文件写入字符串
    • 如果文件不存在,则自动创建
    • append参数表示是否追加内容到文件末尾,true为追加,false为覆盖原有内容,如果不填写append参数默认位ffalse
//以指定编码格式打开文件写入字符串
FileUtils.writeStringToFile(new File("A/test1.txt"), "哈哈哈", "UTF-8", true);
  • writeLines(File file, String encoding, Collection<?> lines, boolean append)
    • 以指定编码格式打开文件,把集合中每项作为行内容写进文件中
    • 其他事项跟writeStringTofile()一样
//把集合中每项作为行内容写进文件
List<String> list=new ArrayList<String>();
list.add("你");
list.add("好");
list.add("world");
FileUtils.writeLines(new File("A/test1.txt"),  "UTF-8",list,true);

三.FileNameUtils

1.获取文件路径信息
String file1="F:/A/B/test.txt";

//文件的纯名称
//baseName:test
String baseName=FilenameUtils.getBaseName(file1);

//文件扩展名
//extension:txt
String extension=FilenameUtils.getExtension(file1);

//文件物理路径的前缀
//prefix:F:/
String prefix=FilenameUtils.getPrefix(file1);

//不包含前缀的文件目录
//path:A/B/
String path=FilenameUtils.getPath(file1);

//不包含前缀并且不包含最后目录分隔符的文件目录
//pathNoEndSeparator:A/B
String pathNoEndSeparator=FilenameUtils.getPathNoEndSeparator(file1);

//包含前缀的文件目录
//fullPath:F:/A/B/
String fullPath=FilenameUtils.getFullPath(file1);

//包含前缀并且不包含最后目录分隔符的文件目录
//fullPathNoEndSeparator:F:/A/B
String fullPathNoEndSeparator=FilenameUtils.getFullPathNoEndSeparator(file1);

//扩展名在文件路径file1中的下标(这里是寻找点号.的下标)
//index_extension:11
int index_extension=FilenameUtils.indexOfExtension(file1);

//最后一个目录分隔符在文件路径中的下标
//index_lastSeparator:6
int index_lastSeparator=FilenameUtils.indexOfLastSeparator(file1);

2.判断文件扩展名
String filename="F:/A/B/test.txt";
List<String> list=new ArrayList<String>();
list.add("gif");
list.add("png");

//判断文件的扩展名
//true
 boolean flag1 = FilenameUtils.isExtension(filename, "txt");
 
 //判断文件扩展名是否符合字符串数组中的任意一个
 //true
 boolean flag2 = FilenameUtils.isExtension(filename, new String[] {"txt","jpg"});
 
//判断文件扩展名是否符合字符串集合中的任意一个
 //false
 boolean flag3 = FilenameUtils.isExtension(filename, list);

四.IOUtils

操作流的工具类

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值