坐标:https://mvnrepository.com/artifact/commons-io/commons-io
说明:
1. 由于是一个工具类使用都非常的简单 所以本文只是将其分类,展示它能够提供给我们什么。
2. 习惯看 api 的可以直接看官方的 api 传送门
3. 可以看一看官方的指引 指引传送门
4.FileUtils 只是 commons-io 的其中一个工具类
分类说明演示:
1. 写 文件 / 文件夹
/* 写文件 * 1. 这里只列出 3 种方式全参数形式,api 提供部分参数的方法重载 * 2. 最后一个布尔参数都是是否是追加模式 * 3. 如果目标文件不存在,FileUtils 会自动创建 * */ //static void:write(File file, CharSequence data, String encoding, boolean append) FileUtils.write(new File("D:/a/b/cxyapi.txt"), " 程序换 api","UTF-8",true); //static void:writeLines(File file, Collection<?> lines, boolean append) List<String> lines=new ArrayList<String>(); lines.add(" 欢迎访问:");lines.add("www.cxyapi.com"); FileUtils.writeLines(new File("D:/a/b/cxyapi.txt"),lines,true); //static void:writeStringToFile(File file, String data, String encoding, boolean append) FileUtils.writeStringToFile(new File("D:/a/b/cxyapi.txt"), " 作者:cxy", "UTF-8",true);
2. 读 文件 / 文件夹
// 读文件 //static String:readFileToString(File file, String encoding) System.out.println(FileUtils.readFileToString(new File("D:/a/b/cxyapi.txt"), "UTF-8")); //static List<String>:readLines(File file, String encoding) System.out.println(FileUtils.readLines(new File("D:/a/b/cxyapi.txt"), "UTF-8")); // 返回一个 list
3. 删除 文件 / 文件夹
// 删除目录 //static void:deleteDirectory(File directory) FileUtils.deleteDirectory(new File("D:/not/cxyapi")); //static boolean:deleteQuietly(File file) FileUtils.deleteQuietly(new File("D:/not/cxyapi")); // 文件夹不是空任然可以被删除,永远不会抛出异常
移动 文件 / 文件夹
// 移动文件 或 文件夹 //static void:moveDirectory(File srcDir, File destDir) FileUtils.moveDirectory(new File("D:/cxyapi1"), new File("D:/cxyapi2")); // 注意这里 第二个参数文件不存在会引发异常 //static void:moveDirectoryToDirectory(File src, File destDir, boolean createDestDir) FileUtils.moveDirectoryToDirectory(new File("D:/cxyapi2"), new File("D:/cxyapi3"), true); /* 上面两个方法的不同是: * moveDirectory:D:/cxyapi2 里的内容是 D:/cxyapi1 的内容。 * moveDirectoryToDirectory:D:/cxyapi2 文件夹移动到到 D:/cxyapi3 里 * * 下面的 3 个都比较简单没提供示例,只提供了 api * 其中 moveToDirectory 和其他的区别是 它能自动识别操作文件还是文件夹 */ //static void:moveFileToDirectory(srcFile, destDir, createDestDir) //static void:moveFile(File srcFile, File destFile) //static void:moveToDirectory(File src, File destDir, boolean createDestDir)
5.copy
// 结果是 cxyapi 和 cxyapi1 在同一目录 FileUtils.copyDirectory(new File("D:/cxyapi"), new File("D:/cxyapi1")); // 结果是将 cxyapi 拷贝到 cxyapi2 下 FileUtils.copyDirectoryToDirectory(new File("D:/cxyapi"), new File("D:/cxyapi2")); // 拷贝文件 FileUtils.copyFile(new File("d:/cxyapi.xml"), new File("d:/cxyapi.xml.bak")); // 拷贝文件到目录中 FileUtils.copyFileToDirectory(new File("d:/cxyapi.xml"), new File("d:/cxyapi")); // 拷贝 url 到文件 FileUtils.copyURLToFile(new URL("http://www.cxyapi.com/rss/cxyapi.xml"), new File("d:/cxyapi.xml"));
6. 其他
// 判断是否包含文件或者文件夹 boolean b=FileUtils.directoryContains(new File("D:/cxyapi"), new File("D:/cxyapi/cxyapi.txt")); System.out.println(b); // 获得临时目录 和 用户目录 System.out.println(FileUtils.getTempDirectoryPath()); System.out.println(FileUtils.getUserDirectoryPath()); // 打开流,如果不存在创建文件及其目录结构 // 第二个参数表示 文件流是否是追加方式 FileOutputStream fos=FileUtils.openOutputStream(new File("D:/cxyapi/cxyapi.txt"),true); fos.write(new String(" 欢迎访问:www.cxyapi.com\r\n").getBytes()); fos.close(); // 文件 或 文件夹大小 System.out.println(FileUtils.sizeOf(new File("D:/cxyapi"))); System.out.println(FileUtils.sizeOfDirectory(new File("D:/cxyapi")));