转自:org.apache.commons.io——FileUtils学习笔记
FileUtils类的应用
1、写入一个文件;
2、从文件中读取;
3、创建一个文件夹,包括文件夹;
4、复制文件和文件夹;
5、删除文件和文件夹;
6、从URL地址中获取文件;
7、通过文件过滤器和扩展名列出文件和文件夹;
8、比较文件内容;
9、文件最后的修改时间;
10、计算校验和。
一、 复制文件或文件夹方法:
示例:
public class CopyFileorDirectory { public static void main(String[] args) throws Exception { File file1 =new File("path1"); File file2 =new File("path2"); File file3 =new File("path3"); File file4 =new File("path4"); File file5 =new File("path5"); //将文件复制到指定文件夹中,保存文件日期的时间。 // 该方法将指定源文件的内容复制到指定目标目录中相同名称的文件中。 // 如果不存在,则创建目标目录。如果目标文件存在,则该方法将覆盖它。 FileUtils.copyFileToDirectory(file1,file2);//文件不重命 //将文件复制到一个新的地方(重命名文件)并保存文件日期的时间。 FileUtils.copyFile(file1,file3); //复制文件夹到指定目录下,如果指定目录不存在则创建 FileUtils.copyDirectoryToDirectory(file2,file4); //复制文件夹到指定目录下并重命名 FileUtils.copyDirectory(file4,file5); //该方法将指定的源目录结构复制到指定的目标目录中。 FileUtils.copyDirectory(file4,file5, DirectoryFileFilter.DIRECTORY); // 复制文件夹下第一级内容中指定后缀文件 IOFileFilter txtSuffixFilter = FileFilterUtils.suffixFileFilter(".txt"); IOFileFilter txtFiles = FileFilterUtils.and(FileFileFilter.FILE, txtSuffixFilter); FileUtils.copyDirectory(file4,file5, txtFiles); // 复制文件目录结构及文件夹下第一级目录内指定后缀文件 FileFilter filter = FileFilterUtils.or(DirectoryFileFilter.DIRECTORY, txtFiles); FileUtils.copyDirectory(file4,file5, filter,false);//preserveFileDate参数默认为true。 //将字节从URL源复制到文件目的地。如果它们还不存在,则将创建到目的地的目录。如果已经存在,文件将被覆盖。 URL source = new URL("http://imgsrc.baidu.com/baike/pic/ewe.jpg"); FileUtils.copyURLToFile(source,file5,1000,1000); // 等待NFS传播文件创建,并强制执行超时。该方法重复测试File.exists(),直到它返回true,或直到秒内指定的最大时间。 File file = new File("/abc/"); boolean d = FileUtils.waitFor(file,100); System.out.println(d); } }
二、删除文件或文件方法
public class FileorDirectoryDelete { public static void main(String[] args) throws Exception{ File file = new File("path1"); File directory = new File("path2"); //递归删除一个目录(包括内容)。 FileUtils.deleteDirectory(directory); //删除一个文件,不会抛出异常。如果文件是一个目录,删除它和所有子目录。 FileUtils.deleteQuietly(file); //清理内容而不删除它。 FileUtils.cleanDirectory(directory); //删除一个文件,会抛出异常 //如果file是文件夹,就删除文件夹及文件夹里面所有的内容。如果file是文件,就删除。 //如果某个文件/文件夹由于某些原因无法被删除,会抛出异常 FileUtils.forceDelete(file); } }
三、创建目录
public class CreatDirectory { public static void main(String[] args) throws Exception { File file = new File("path"); //创建一个文件夹,如果由于某些原因导致不能创建,则抛出异常 //一次可以创建单级或者多级目录 FileUtils.forceMkdir(new File("/Users/wuguibin/Downloads/folder")); //为指定文件创建文件的父级目录 FileUtils.forceMkdirParent(file); } }
四、移动文件或文件夹
//移动文件夹,并重新命名 FileUtils.moveDirectory(new File("/Users/Downloads/file1"), new File("/Users/Downloads/file2/file3")); //移动文件夹,并给定是否重命名 FileUtils.moveDirectoryToDirectory(new File("/Users/Downloads/file1"), new File("/Users/Downloads/file2/"),false); //移动文件到指定文件夹中,并重新命名 FileUtils.moveFile(file1,new File("/Users/Downloads/海葡萄.jpen")); //移动文件到指定文件夹中,并给定是否创建文件夹 FileUtils.moveFileToDirectory(new File("/Users/Downloads/海葡萄.jpeg"), new File("/Users/Downloads/file2"),false);
五、判断文件是否相同或包含关系、获取文件或文件夹大小
//确定父目录是否包含指定子元素(一个文件或目录)。即directory是否包含file2,在比较之前,文件是标准化的。 boolean a = FileUtils.directoryContains(directory,file2); //比较两个文件的内容,以确定它们是否相同。 boolean b = FileUtils.contentEquals(file1, file2) //获取指定文件或文件夹大小,有可能溢出,变为负值 long l = FileUtils.sizeOf(file1); System.out.println(l+"KB"); //获取指定文件或文件夹大小,不溢出 BigInteger bi= FileUtils.sizeOfAsBigInteger(file1); System.out.println(bi+"kb"); //递归地计算一个目录的大小(所有文件的长度的总和)。 //注意,sizeOfDirectory()没有检测溢出,如果溢出发生,返回值可能为负。sizeOfDirectoryAsBigInteger()方法则不溢出。 FileUtils.sizeOfDirectory(file1); FileUtils.sizeOfDirectoryAsBigInteger(file1);
六、比较文件新旧
//比较指定文件是否比参考文件创建或修改后时间晚 boolean b = FileUtils.isFileNewer(file1,file2)); //如果指定的文件比指定的日期更新。 SimpleDateFormat date = new SimpleDateFormat("yyyy/MM/dd"); String date1 = "2017/06/20"; boolean c = FileUtils.isFileNewer(file1,date.parse(date1)); boolean d = FileUtils.isFileNewer(file1,23243); //指定文件创建或修改后的时间是否比参考文件或日期早 FileUtils.isFileOlder(file1,232434); FileUtils.isFileOlder(file1,System.currentTimeMillis());
七、写入文件
//把集合里面的内容写入文件,以指定字符串结束写入 //void writeLines(File file,Collection<?> lines,String lineEnding,boolean append) ArrayList<String> list = new ArrayList<>(); String str1 = "Java"; String str2 = "JSP"; list.add(str1); list.add(str2); FileUtils.writeLines(file8,"GBK",list,"java",true); //把字符串写入文件 //参数1:需要写入的文件,如果文件不存在,将自动创建。 参数2:需要写入的内容 //参数3:编码格式 参数4:是否为追加模式( ture: 追加模式,把字符串追加到原内容后面) String data1 = "认真"; FileUtils.writeStringToFile(file,data1, "UTF-8", true); //把字节数组写入文件 byte [] buf = {13,123,34}; System.out.println(new String(buf)); FileUtils.writeByteArrayToFile(file13,buf,0,buf.length,true);
八、读取文件及获取输入输出流
//将文件的内容读入一个字符串中。 String str = FileUtils.readFileToString(file,"UTF-16" ); FileUtils.readFileToByteArray(file); //把文件读取到字节数组里面 byte[] readFileToByteArray(final File file) //把文件读取成字符串 ;Charset encoding:编码格式 String readFileToString(final File file, final Charset encoding) //把文件读取成字符串集合 ;Charset encoding:编码格式 List<String> list4 =FileUtils.readLines( new File("/Users/Shared/笔记/java.txt"),"UTF-8"); Iterator it = list4.iterator(); while (it.hasNext()){ Object obj=it.next(); System.out.println(obj); } //获取输入流 FileUtils.openInputStream(file); //获取输出流 FileUtils.openOutputStream(file);
相关推荐
Apache Commons IO库中的`org.apache.commons.io.FileUtils`类是一个非常实用的工具类,它提供了大量方便、高效的方法,用于处理文件系统操作。这个类在Java开发中被广泛使用,尤其是在处理大量的文件读写和管理任务...
解决Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.FileUtils 类似错误,需要导入jar包,下载地址是http://commons.apache.org/proper/commons-io/download_io.cgi
`org.apache.commons.io`是这个库的核心包,包含了许多与文件、流、过滤器、读写操作相关的类和工具。 1. **文件操作**: `FileUtils` 类提供了大量的静态方法,用于执行文件和目录的操作,如复制、移动、删除、创建...
2. **Apache Commons IO**: 该模块主要关注输入/输出操作,提供文件操作、流处理、读写二进制或文本数据的工具类。例如,FileUtils 提供了文件的创建、复制、移动和删除等操作,IOUtils 可以用于读取和写入流,或者...
例如,`FileUtils` 提供了大量用于操作文件的静态方法,如拷贝、删除和比较文件;`IOUtils` 则包含了一些与流操作相关的方法,如读取流到字符串或写入字符串到流。 3. **Commons Collections**:这是一个用于增强 ...
相较于Java标准库中的`java.io.File`类提供的`copy()`方法,`commons-io`的`FileUtils.copyFile()`更简单易用,且异常处理更简洁。 总的来说,`commons-io-2.5.jar` 是Java开发者的强大工具,它极大地扩展了Java IO...
在描述中提到的"org.apache.commons.io.FileUtils"是Apache Commons IO中的一个关键类,它提供了大量静态方法来简化文件操作,如复制、移动、删除、读写文件等。以下是一些FileUtils类中的核心功能: 1. 文件复制:...
1. **IO**: Apache Commons IO 提供了大量与输入/输出流相关的实用工具类,如文件操作、流处理、数据转换等。例如,`FileUtils` 类提供了方便的文件操作方法,如复制、删除、移动等;`IOUtils` 类则提供了读写流的...
- `FileUtils.readFileToByteArray()` 和 `FileUtils.writeByteArrayToFile()` 可以方便地将文件读入或写入字节数组,适合处理大文件时的分块操作。 10. **对象序列化与反序列化**: - `ObjectInputStream` 和 `...
1. 文件操作:提供了一系列静态方法来操作文件,如创建、删除、移动、复制和检查文件或目录。例如,`FileUtils.copyFile()` 和 `FileUtils.deleteQuietly()` 方法分别用于文件的复制和安全删除。 2. 流操作:提供了...
1. 文件操作:Apache Commons IO库提供了多种操作文件的方法,如创建、删除、移动、重命名等,同时也支持批量操作。 2. 流操作:通过`IOUtils`,开发者可以轻松地复制流、读取流内容、关闭流,甚至可以实现流的缓冲...
3. **Commons IO**: 这个库主要处理输入/输出相关的操作,包含文件操作、流处理、字符集转换等。例如,FileUtils 提供了安全的文件操作方法,IOUtils 可以方便地读写流数据。 4. **Commons Net**: 这是网络编程的...
例如,`FileUtils.copyFile()`和`FileUtils.moveFile()`可以方便地实现文件的复制和移动,而`DirectoryWalker`类则用于遍历目录结构,执行自定义操作。 2. 文件比较:`FileCompare`类提供了比较两个文件或两个目录...
Apache Commons IO 是一个Java库,专注于提供各种I/O操作的实用工具类,这些操作包括文件、流、过滤器、读写、转换、检测等。在本案例中,我们讨论的是"commons-io-2.4"版本,这个版本包含了完整的Apache Commons IO...
总的来说,Apache Commons IO是一个强大且全面的工具集,它简化了Java中的I/O操作,使得开发者可以更专注于业务逻辑,而不是基础的文件和流处理。无论是在小型项目还是大型系统中,它都是一个不可或缺的依赖库。
2. **Commons IO**: 专注于文件输入输出相关的操作,提供了一些方便的类和方法,如 FileUtils、IOUtils、FileFilter 等。 3. **Commons Collections**: 为 Java 集合框架提供了扩展,包括各种集合操作、转换和工厂...
在Java开发中,进行文件操作是必不可少的一部分,Apache Commons IO库提供了一个非常方便的工具类FileUtils,它对Java基础的IO操作进行了封装,使得文件处理更加简洁易用。在本文中,我们将详细介绍FileUtils工具类...
Apache Commons IO库则提供了大量实用的文件操作方法,如文件复制、移动、删除、读写等。在文件上传过程中,可能需要使用`IOUtils`类来读取或写入文件内容。例如,将上传的文件内容读取为字节数组: ```java import...