使用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);
}
}