FileUtils

本文详细展示了如何使用Apache Commons IO库进行文件的读写、删除、复制、移动以及快速下载和复制。包括向文件写入内容、追加内容、读取文件、删除文件夹、复制文件夹、移动文件、下载文件的多种方式以及实现快速复制文件的方法。
摘要由CSDN通过智能技术生成
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
</dependency>

【写文件】
public static void main(String[] args) throws IOException {
	// 1、 向一个文件写入一段文字
	FileUtils.write(new File("D:/a/1.txt"), "文件内容", "UTF-8", true);
	
	// 2、以追加的方式写入
	FileUtils.writeStringToFile(new File("D:/a/1.txt"), "author:apple", "UTF-8", true);
	
	//3、写入多行
	List<String> list= new ArrayList<String>();
	list.add("第一行");
	list.add("第二行");
	FileUtils.writeLines(new File("D:/a/1.txt"), list, true);
}

【读文件】
public static void main(String[] args) throws IOException {
	//读文件  
	System.out.println(FileUtils.readFileToString(new File("D:/a/1.txt"), "UTF-8"));

    //返回一个list 
	System.out.println(FileUtils.readLines(new File("D:/a/1.txt"), "UTF-8")); 
}


【删除文件/文件夹】
public static void main(String[] args) throws IOException {
	// 删除文件夹 
	FileUtils.deleteDirectory(new File("D:/a"));  
	  
	// 文件夹不是空仍然可以被删除,永远不会抛出异常  
	FileUtils.deleteQuietly(new File("D:/a")); 
}

【复制文件】
public static void main(String[] args) throws IOException {
	//结果是a和a1在同一目录  
	FileUtils.copyDirectory(new File("D:/a"), new File("D:/a1"));   
	//结果是将a拷贝到a2下  
	FileUtils.copyDirectoryToDirectory(new File("D:/a"), new File("D:/a2"));  
	  
	//拷贝文件  
	FileUtils.copyFile(new File("d:/1.xml"), new File("d:/1.xml.bak"));  
	//拷贝文件到目录中  
	FileUtils.copyFileToDirectory(new File("d:/1.xml"), new File("d:/a"));  
	//拷贝url到文件  
	FileUtils.copyURLToFile(new URL("http://www.a.com/1.xml"), new File("d:/1.xml"));  
}
【移动文件】
public static void main(String[] args) throws IOException {
	//移动文件 或 文件夹  
	//static void moveDirectory(File srcDir, File destDir)   
	FileUtils.moveDirectory(new File("D:/a1"), new File("D:/a2")); //注意这里 第二个参数文件不存在会引发异常  
	
	//static void moveDirectoryToDirectory(File src, File destDir, boolean createDestDir)   
	FileUtils.moveDirectoryToDirectory(new File("D:/a2"), new File("D:/a3"), true);  
	
	/* 上面两个方法的不同是: 
	 * moveDirectory:D:/a2里的内容是D:/a1的内容。 
	 * moveDirectoryToDirectory:D:/a2文件夹移动到到D:/a3里 
	 *  
	 * 下面的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)  
}
【实现快速下载文件】
public static void main(String[] args) throws IOException {
	//下载方式1
	URL url = new URL("http://www.baidu.com/img/baidu_logo.gif");
	File file = new File("/Users/jjs/Desktop/baidu1.gif");
	FileUtils.copyURLToFile(url, file);
	
	//下载方式2
	InputStream in = new URL("http://www.baidu.com/img/baidu_logo.gif").openStream();
	byte[] gif = IOUtils.toByteArray(in);
	FileUtils.writeByteArrayToFile(new File("D:/baidu2.gif"), gif);
	IOUtils.closeQuietly(in);

	//下载方式3
	InputStream in3 = new URL("http://www.baidu.com/img/baidu_logo.gif").openStream();
	byte[] gif3 = IOUtils.toByteArray(in3);
	IOUtils.write(gif3, new FileOutputStream(new File("D:/baidu3.gif")));
	IOUtils.closeQuietly(in3);
}

【实现快速复制】
public static void main(String[] args) throws IOException {

	//复制方式1
	FileUtils.copyFile(new File(D:/abc.txt"), new File(D:/abc_bak.txt"));

	//复制方式2
	Writer write = new FileWriter("D:/abc_bak.txt");
	InputStream ins = new FileInputStream(new File("D:/abc.txt"));
	IOUtils.copy(ins, write);
	write.close();
	IOUtils.closeQuietly(ins);
	
	//将内容同时写入两个不同的文件,就当是一种另类的复制吧
	File test1 = new File("D:/split1.txt");
	File test2 = new File("D:p/split2.txt");
	OutputStream outStream = null;
	try {
		FileOutputStream fos1 = new FileOutputStream(test1);
		FileOutputStream fos2 = new FileOutputStream(test2);
		//包含不同的文本  
		outStream = new TeeOutputStream(fos1, fos2);
		outStream.write("One Two Three, Test".getBytes());
		outStream.flush();
	} catch (IOException ioe) {
		System.out.println("Error writing to split output stream");
	} finally {
		IOUtils.closeQuietly(outStream);
	}
}

获取网页的内容】
public static void main(String[] args) throws IOException {
	URL webUrl = new URL("https://wenku.baidu.com/view/7999faba960590c69ec376be.html?from=search");  
	InputStream ins = webUrl.openStream();
	String contents = IOUtils.toString(ins, "gb2312");
	System.out.println("contents: " + contents);
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值