天天看點

Apache Commons IO之FileUtils類操作使用FileUtils類操作檔案讀寫與拷貝

使用FileUtils類操作檔案讀寫與拷貝

1.讀取内容

package com.commons;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;

/**
 * 使用FileUtils類讀内容
 * readFileToString()
 * readFileToByteArray()
 * lineIterator
 * readLines
 * 
 *
 */
public class IOTest03 {
	public static void main(String[] args) throws IOException {
		//讀檔案
		String msg=FileUtils.readFileToString(new File("E:\\java300集\\javaIO\\src\\com\\commons\\emp.txt"),"GBK");
		System.out.println(msg);
		
		byte[] datas = FileUtils.readFileToByteArray(new File("E:\\java300集\\javaIO\\src\\com\\commons\\emp.txt"));
			readByte(datas);//讀位元組數組
		
			//逐行讀
		List<String> msgs = FileUtils.readLines(new File("E:\\java300集\\javaIO\\src\\com\\commons\\emp.txt"),"GBK");
		for (String string : msgs) {
			System.out.println(string);
		}
		
		LineIterator it =FileUtils.lineIterator(new File("E:\\java300集\\javaIO\\src\\com\\commons\\emp.txt"),"GBK");
		while(it.hasNext()) {
			System.out.println(it.nextLine());
		}
	}
	
	//讀位元組數組
	public static void readByte(byte[] datas) {
		InputStream is = null; 
		try {
			is = new ByteArrayInputStream(datas);
			 //3.操作
			byte[] flush = new byte[5];//緩沖容器
			int len = -1;//接受長度
			while((len=is.read(flush))!=-1) {
				//位元組數組-->字元串
				String str = new String(flush,0,len);
				System.out.println(str);	
			}
			
		}
		catch(IOException e){
			e.printStackTrace();
		}finally {
			//4.釋放資源
			try {
				if(null!=is ) 
					is.close();
			}catch (IOException e) {
					// TODO Auto-generated catch block
				e.printStackTrace();
				}
			}
			
		
	}
}

           

2.寫入内容

package com.commons;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.io.FileUtils;

/**
 * 使用FileUtils寫出内容
 * write
 * writeStringToFile 字元串寫入檔案
 * writeByteArrayToFile 位元組數組寫入檔案
 * writeLines 清單内容寫入檔案
 */
public class IOTest04 {

	public static void main(String[] args) throws IOException {
		//寫出檔案
		FileUtils.write(new File("test.txt"), "學習是一件偉大的事業\r\n","GBK");
		FileUtils.writeStringToFile(new File("test.txt"), "學習是一件辛苦的事業\r\n","GBK",true);
		FileUtils.writeByteArrayToFile(new File("test.txt"), "學習是一件幸福的事業\r\n".getBytes("GBK"),true);
		
		//寫出清單
		List<String> datas =new ArrayList<String>();
		datas.add("3");
		datas.add("2");
		datas.add("1");
		
		
		FileUtils.writeLines(new File("test.txt"), datas,"/",true);//file,資料,分隔符,是否追加
	}

}

           

3.檔案拷貝

package com.commons;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;

/**
 * 
 * 		FileUtils檔案拷貝
 *	複制目錄(拷貝目錄的檔案)copyDirectory(srcDir, destDir)
	複制目錄到目錄(連同目錄一同拷貝)copyDirectoryToDirectory(srcDir, destDir)
	複制檔案	copyFile(srcFile, destFile)
	複制檔案到目錄copyFileToDirectory(srcFile, destDir)
	複制URL内容	copyURLToFile(source, destination)
 *
 */
public class IOTest05 {
	public static void main(String[] args) throws IOException {
		//複制檔案
		FileUtils.copyFile(new File("p.jpg"), new File("p-copy.jpg"));
		
		//複制檔案到目錄
		FileUtils.copyFileToDirectory(new File("p.jpg"), new File("lib"));
		
		FileUtils.copyDirectoryToDirectory(new File("lib"), new File("lib2"));
		
		//複制目錄(拷貝目錄的檔案)
		FileUtils.copyDirectory(new File("lib"), new File("lib2"));
		
		//拷貝URL内容
		String url="https://pic2.zhimg.com/v2-7d01cab20858648cbf62333a7988e6d0_qhd.jpg";
		FileUtils.copyURLToFile(new URL(url), new File("marvel.jpg"));
		String datas = IOUtils.toString(new URL("http://www.baidu.com"),"utf-8");
		System.out.println(datas);
				
	}
}