java中常见文件操作

 在工作当中我们往往遇到很多文件的操作,apache的commons的FileUtils类就是这样一个工具类

1 读写删文件

/* 写文件

 * 1.这里只列出3种方式全参数形式,api提供部分参数的方法重载
 * 2.最后一个布尔参数都是是否是追加模式
 * 3.如果目标文件不存在,FileUtils会自动创建
 * */
//static void:write(File file, CharSequence data, String encoding, boolean append) 
FileUtils.write(new File("D:/test/a.txt"), "测试","UTF-8",true);


//static void:writeLines(File file, Collection<?> lines, boolean append) 
List<String> lines=new ArrayList<String>();
lines.add("测试");lines.add("测试1");
FileUtils.writeLines(new File("D:/test/a.txt"),lines,true);


//static void:writeStringToFile(File file, String data, String encoding, boolean append) 
FileUtils.writeStringToFile(new File("D:/test/a.txt") "作者:"zhishang", "UTF-8",true);


//读文件
//static String:readFileToString(File file, String encoding) 
System.out.println(FileUtils.readFileToString(new File("D:/test/a.txt), "UTF-8"));


//static List<String>:readLines(File file, String encoding) 
System.out.println(FileUtils.readLines(new File("D:/test/a.txt, "UTF-8")); //返回一个list


//删除目录
//static void:deleteDirectory(File directory) 
FileUtils.deleteDirectory(new File("D:/test/a.txt));


//static boolean:deleteQuietly(File file) 
FileUtils.deleteQuietly(new File("D:/test/a.txt)); //文件夹不是空任然可以被删除,永远不会抛出异常


2 移动

//移动文件 或 文件夹
//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)


3 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"));


4 其它

//判断是否包含文件或者文件夹
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")));



还可以自己封装一些常用的方法


 public static String inputStream2String(InputStream inputStream, String encoding) throws IOException {
    StringWriter writer = new StringWriter();
   
IOUtils.copy(inputStream, writer, encoding);
        
        return writer.toString();
    }
    
    public static String file2String(String path) throws IOException {
FileInputStream stream = new FileInputStream(new File(path));
try {
FileChannel fc = stream.getChannel();
MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
return Charset.defaultCharset().decode(bb).toString();
}
finally {
stream.close();
}
    }
    
    public static String file2String(File file) throws IOException {
FileInputStream stream = new FileInputStream(file);
try {
FileChannel fc = stream.getChannel();
MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
return Charset.defaultCharset().decode(bb).toString();
}
finally {
stream.close();
}
    }


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值