您的位置:首页
【FileUtils】File对文件与目录的处理&FileUtis工具的使用
2017-10-30 15:37
621 查看
[b]-------------------File的使用--------------[/b]
1.File类对文件的处理
1.1目录结构:
1.2测试对文件Test.txt处理:
结果:
[b] 2.对目录的处理[/b]
2.1目录结构:
2.2测试代码:
结果:
总结:如果删除一个目录下的文件可以用上述的办法遍历一个目录下的文件然后删除文件。
[b]-------------------FileUtils的使用([/b]commons-io.jar[b])--------------[/b]
需要注意的是tomcat的包下也有一个这个类,注意用的是commons-io的包,不要用错:
参考:http://langgufu.iteye.com/blog/2215918
分类说明演示:
1.写 文件/文件夹
2.读 文件/文件夹
3.删除 文件/文件夹
4.移动 文件/文件夹
5.copy
6.其他
7.FilenameUtils可以对文件的名字进行处理,可以快速的获取文件的扩展名与基本名字:([b]commons-io.jar)[/b]
补充:
8.IOUtils实现文件拷贝
org.apache.commons.io.IOUtils可以简单的将一个inputStream的文件读取到另一个outputStream,实现文件的拷贝,例如:
只用传两个参数,第一个传递InputStream,第二个传递OutputStream
1.File类对文件的处理
1.1目录结构:
1.2测试对文件Test.txt处理:
// 测试文件 @Test public void test1() throws IOException { String contextPath = System.getProperty("user.dir");// 获取项目名字 System.out.println("文件路径: " + contextPath + "/Test.txt"); // 创建File的第一种方式 // File file = new File(contextPath + "/Test.txt"); // 第二种方式 File file = new File(contextPath, "/Test.txt"); // 判断文件是否存在,如果不存在就新创文件 if (!file.exists()) { // file.delete();删除文件 file.createNewFile();// 创建一个Text.txt文件 System.out.println("新增文件"); } System.out.println("是否是文件" + file.isFile()); System.out.println("是否是目录" + file.isDirectory()); // 获取文件大小(以字节为单位) if (file.isFile()) { System.out.println("文件大小:" + file.length() + "字节"); } System.out.println("此文件的上级目录是" + file.getParent()); }
结果:
文件路径: E:\EclipseWorkspace\AllTest/Test.txt 是否是文件true 是否是目录false 文件大小:40字节 此文件的上级目录是E:\EclipseWorkspace\AllTest
[b] 2.对目录的处理[/b]
2.1目录结构:
2.2测试代码:
// 测试目录 @Test public void test2() throws IOException { String contextPath = System.getProperty("user.dir");// 获取项目名字 System.out.println("文件路径: " + contextPath + "\\text"); // 第一种方式 // File file = new File(contextPath,"text"); // 第二种 File file = new File(contextPath, "text"); System.out.println("文件是否存在" + file.exists()); if (!file.exists()) {// 如果目录不存在 file.mkdir();// 创建目录 } // 判断文件是否存在,如果存在删除文件 System.out.println("是否是文件" + file.isFile()); System.out.println("是否是目录" + file.isDirectory()); // 列举目录下的文件的名字 if (file.isDirectory()) { File[] listFiles = file.listFiles(); System.out.println("目录下的文件有:"); for (File fi : listFiles) { // 列举文件名字与大小 System.out.println(fi.getName() + " 大小 " + fi.length() * 1.0 / 1024 + "KB"); // 删除文件 System.out.println("文件将被删除"); fi.delete(); } } System.out.println("此文件的上级目录是" + file.getParent()); }
结果:
文件路径: E:\EclipseWorkspace\AllTest\text 文件是否存在true 是否是文件false 是否是目录true 目录下的文件有: 1.txt 大小 0.015625KB 文件将被删除 9.20PDM截图.pdf 大小 193.109375KB 文件将被删除 web.xml 大小 0.951171875KB 文件将被删除 此文件的上级目录是E:\EclipseWorkspace\AllTest
总结:如果删除一个目录下的文件可以用上述的办法遍历一个目录下的文件然后删除文件。
[b]-------------------FileUtils的使用([/b]commons-io.jar[b])--------------[/b]
需要注意的是tomcat的包下也有一个这个类,注意用的是commons-io的包,不要用错:
参考:http://langgufu.iteye.com/blog/2215918
分类说明演示:
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")); //文件夹不是空任然可以被删除,永远不会抛出异常
4.移动 文件/文件夹
//移动文件 或 文件夹 //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")));
7.FilenameUtils可以对文件的名字进行处理,可以快速的获取文件的扩展名与基本名字:([b]commons-io.jar)[/b]
补充:
8.IOUtils实现文件拷贝
org.apache.commons.io.IOUtils可以简单的将一个inputStream的文件读取到另一个outputStream,实现文件的拷贝,例如:
只用传两个参数,第一个传递InputStream,第二个传递OutputStream
package cn.qlq.craw.Jsoup; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.net.URLConnection; import org.apache.commons.io.IOUtils; public class IOutilsDownloadFile { public static void main(String[] args) throws IOException { String url = "http://qiaoliqiang.cn/fileDown/zfb.bmp"; URL url1 = new URL(url); URLConnection conn = url1.openConnection(); InputStream inputStream = conn.getInputStream(); String path = "C:\\Users\\liqiang\\Desktop\\test.bmp"; OutputStream outputStream = new FileOutputStream(path); // 利用IOutiks拷贝文件,简单快捷 IOUtils.copy(inputStream, outputStream); } }
相关文章推荐
- lamp使用php处理上传文件,调用move_uploaded_file函数遇到目录写权限问题及解决过程
- 实现任意文件下载&nbsp;FileDownload使用教程
- 对使用"ALTER DATABASE BACKUP CONTROLFILE TO ''" 备份的控制文件的恢
- 移动硬盘"文件或目录损坏且无法读取"可能的处理办法
- 使用 ASMCMD 工具管理ASM目录及文件
- 使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)
- 使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)
- Using GLib's GKeyFile Parser (使用Glib解析配置文件)
- day11 线程同步 使用 File 创建目录和文件 常用的 IO 流
- excel文件目录的文件批量合并工具,欢迎大家使用!
- 使用windows服务和.NET FileSystemWatcher对象来监控磁盘文件目录的改变
- 使用windows服务和.NET FileSystemWatcher对象来监控磁盘文件目录的改变
- 市面上所有号称"虚拟机","防火墙"的实时监控杀毒软件无一不是使用的IFSHOOK技术.但是同时也有一些朋友不断写MAIL给我打听如何实现读写的监控.下面给出用VTOOLSD写的代码.也就是所有实时杀毒软件的奥秘.同时,很多拦截文件操作的软件,例如对目录加
- VBScript的PDF转换工具.9.处理目录和单个文件
- 使用 ASMCMD 工具管理ASM目录及文件
- 处理资源文件(Resources.properties)的字符问题 & 使用
- AjaxFileUpLoad 文件异步上传Demo(模仿官方网站,后台使用.net一般处理程序)
- 使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)
- 使用 ASMCMD 工具管理ASM目录及文件
- 使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)