java - FileUtils类

一、概述

这是一个Java操作文件的常用库,是Apache对java的IO包的封装,这里面有两个非常核心的类FilenameUtils跟FileUtils,其中FilenameUtils是对文件名操作的封装;FileUtils是文件封装,开发中对文件的操作,几乎都可以在这个框架里面找到。 非常的好用。

导入依赖:

    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3.3</version>
    </dependency>

二、FileUtiles读API

public static void main(String[] args) throws Exception {  
        //读取文本文件的所有行到一个集合  
        List<String> lines=FileUtils.readLines(new File("D:/fileUtis/aa.txt"),"utf-8");  
        for (String s : lines) {  
            System.out.println(s);  
        }  
        //读取文件内容到一个字符串  
        String str = FileUtils.readFileToString(new File("D:/fileUtis/aa.txt"), "utf-8");  
        System.out.println(str);  
        //读取文件到一个byte数组  
        FileUtils.readFileToByteArray(new File("D:/fileUtis/aa.txt"));  
    }  

三、FileUtiles写API

public static void main(String[] args) throws Exception {  
        //将字符写入到一个文件,文件不存在会创建;第三个参数:true:追加,false:覆盖  
        FileUtils.write(new File("D:/fileUtis/targetFile/aa.txt"),"aa",false);  
        //根据指定编码将字符写入到一个文件,文件不存在会创建;会覆盖  
        FileUtils.write(new File("D:/fileUtis/targetFile/bb.txt"),"ickes","utf-8");  
        //根据指定编码将字符写入到一个文件,文件不存在会创建;会覆盖  
        FileUtils.write(new File("D:/fileUtis/targetFile/cc.txt"),"ickes","utf-8",true);  
        //将一个字符串集合根据指定的分隔符写入到文件中,第四个参数是分隔符  
        List<String> ss = new ArrayList<>();  
        ss.add("aa");
        ss.add("bb");  
        FileUtils.writeLines(new File("D:/fileUtis/targetFile/dd.txt"),"utf-8",ss, ",");  
        //将一个字符串集合,一行一行写入到文件中,  
        FileUtils.writeLines(new File("D:/fileUtis/targetFile/ee.txt"), "utf-8", ss,true);  
    }

四、FileUtiles删除API

public static void main(String[] args) throws Exception {  
        //删除一个目录和他的所有子目录,如果文件或者目录不存在会抛出异常  
        FileUtils.deleteDirectory(new File("D:/fileUtis/targetFile/"));  
        //删除一个目录或者一个文件,如果这个目录或者目录不存在不会抛出异常  
        FileUtils.deleteQuietly(new File("D:/fileUtis/targetFile/"));  
        //清除一个目录下面的所有文件跟目录。  
        FileUtils.cleanDirectory(new File("D:/fileUtis/targetFile/"));  
        //删除一个文件,如果是目录则递归删除forceDelete(File file),跟deleteDirectory基本一样  
        FileUtils.forceDelete(new File("D:/fileUtis/targetFile/"));  
    } 

五、FileUtiles创建API

public static void main(String[] args) throws Exception {  
        //创建一个目录,可以递归创建,只要不为null  
        FileUtils.forceMkdir(new File("D:/fileUtis/targetFile/aa"));  
        //创建一个空文件,若文件应经存在则只更改文件的最近修改时间  
        FileUtils.touch(new File("D:/fileUtis/targetFile/Liftoff.java"));  
    }  

六、FileUtiles复制、移动、剪切API

public static void main(String[] args) throws Exception {  
        //复制目录  
        File dataFile=new File("D:/fileUtis/dataFile");  
        File targetFile = new File("D:/fileUtis/targetFile");  
        if(targetFile.isDirectory()){//判断是否是一个目录  
            FileUtils.copyDirectory(dataFile,targetFile);  
        }  
        //复制文件  
        dataFile=new File("D:/fileUtis/dataFile/joiner.java");  
        targetFile = new File("D:/fileUtis/targetFile/aa.txt");  
        FileUtils.copyFile(dataFile,targetFile);  
        //复制文件到一个目录  
        dataFile=new File("D:/fileUtis/dataFile/joiner.java");  
        targetFile = new File("D:/fileUtis/");  
        FileUtils.copyFileToDirectory(dataFile, targetFile);  
          
        //移动目录到新的目录并且删除老的目录,新的目录不存在会创建,如果存在会报错  
        dataFile=new File("D:/fileUtis/dataFile");  
        targetFile = new File("D:/fileUtis/aa");  
        FileUtils.moveDirectory(dataFile, targetFile);  
          
        dataFile=new File("D:/fileUtis/dataFile");  
        targetFile = new File("D:/fileUtis/aa");  
        //把目录移动到一个新的文件下面,是新文件下面,ture,当目标文件不存在是否创建  
        FileUtils.moveDirectoryToDirectory(dataFile, targetFile, true);  
        //复制文件  
        FileUtils.moveFile(srcFile, destFile)  
    }  

七、FileUtiles的其他方法

#获取一个目录的大小  
FileUtils.sizeOfDirectory(file);  
  
#获取文件或者目录的大小  
FileUtils.sizeOf(file);  
  
#得到系统临时目录的路径,例如C:\Users\ADMINI~1\AppData\Local\Temp\  
FileUtils.getTempDirectoryPath()  
  
#比较两个文件内容是否相等,左右两边有空格返回false  
FileUtils.contentEquals(file1, file2);  
  
#获取用户的主目录路径,返回的是字符串  
FileUtils.getUserDirectoryPath();  
  
#获取代表用户主目录的文件,返回的是file  
FileUtils.getUserDirectory();  
  
#根据指定的文件获取一个新的文件输出流  
FileUtils.openOutputStream(file);  
  
#字节转换成直观带单位的值(包括单位GB,MB,KB或字节),如下返回95 M  
FileUtils.byteCountToDisplaySize(100000000);   

八、对文件的过滤处理

public class FileUtilsTest {  
    /** 
     * 通配符过滤目录下的文件 
     */  
    static void wildcardTest(){  
        File dir = new File("D:/fileUtis");
        FileFilter fileFilter = new WildcardFileFilter("*.java");
        File[] files = dir.listFiles(fileFilter);    
        for (int i = 0; i < files.length; i++) {    
           System.out.println(files[i]);    
        }    
    }  
    /** 
     * 过滤文件大小,等于或大于某一尺寸 ,单位为字节 
     */  
    static void sizeFile(){  
        File dir = new File("D:/fileUtis");   
        String[] files = dir.list( new SizeFileFilter(1024*2) );  
        for ( int i = 0; i < files.length; i++ ) {  
            System.out.println(files[i]);  
        }  
    }  
    /** 
     * 过滤文件后缀名  
     */  
    static void suffix(){  
        File dir = new File("D:/fileUtis");   
        String[] files = dir.list(new SuffixFileFilter(".java"));  
        for (int i = 0; i < files.length; i++) {    
            System.out.println(files[i]);    
        }     
    }  
    /** 
     * 使用正则表达式过滤 
     */  
    static void regex(){  
        File dir = new File("D:/fileUtis");   
        FileFilter fileFilter = new RegexFileFilter("^j.*.java");    
        File[] files = dir.listFiles(fileFilter);    
        for (int i = 0; i < files.length; i++) {    
          System.out.println(files[i]);    
        }   
    }  
      
    /** 
     * 文件前缀过滤 
     */  
    static void aa(){  
        File dir = new File("D:/fileUtis");  
        String[] files = dir.list( new PrefixFileFilter("aa"));    
        for ( int i = 0; i < files.length; i++ ) {    
             System.out.println(files[i]);    
        }    
    }  
    /** 
     * 打印这个目录下所有.java结尾的文件名,会递归去他子目录中去找 
     * @param args 
     * @throws Exception 
     */  
    public static void main(String[] args) throws Exception {  
        File dir = new File("D:/fileUtis");  
        Collection<File> files = FileUtils.listFiles(dir,  
                FileFilterUtils.suffixFileFilter(".java"),    
                DirectoryFileFilter.DIRECTORY);  
         for (File f : files) {    
              System.out.println(f.getName());    
         }   
    }  
}  

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Eclipse中导入并使用java-diff-utils jar包,您可以按照以下步骤进行操作: 1. 下载java-diff-utils jar包:您可以在Maven仓库或者其他jar包仓库中找到并下载java-diff-utils的jar包文件。 2. 在Eclipse中创建一个Java项目:打开Eclipse并选择一个合适的工作空间,然后通过选择“File” -> “New” -> “Java Project”来创建一个新的Java项目。 3. 导入java-diff-utils jar包:在Eclipse的“Package Explorer”视图中,右键单击您的Java项目,然后选择“Properties” -> “Java Build Path”。在弹出的对话框中,选择“Libraries”选项卡,然后点击“Add External JARs”按钮。选择您下载的java-diff-utils jar文件并点击“Open”按钮,然后点击“OK”按钮来完成导入。 4. 使用java-diff-utils库:现在您可以在您的Java代码中使用java-diff-utils库提供的和方法了。您可以通过导入相应的包来引用所需的。例如,要使用Diff,您可以在代码中添加以下导入语句: ```java import difflib.DiffUtils; import difflib.Delta; import difflib.DiffUtils; import difflib.Patch; ``` 接下来,您可以使用Diff的方法来计算和应用差异。例如,要计算两个字符串之间的差异,您可以使用以下代码: ```java List<String> original = FileUtils.readLines(new File("originalFile.txt"), "UTF-8"); List<String> revised = FileUtils.readLines(new File("revisedFile.txt"), "UTF-8"); Patch<String> patch = DiffUtils.diff(original, revised); List<Delta<String>> deltas = patch.getDeltas(); for (Delta<String> delta : deltas) { System.out.println(delta); } ``` 请注意,上述代码假设您已经将原始文件和修订文件分别保存为“originalFile.txt”和“revisedFile.txt”。 这样,您就可以在Eclipse中导入并使用java-diff-utils jar包了。希望对您有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值