java.io流--複製檔案
阿新 • • 發佈:2018-11-16
主要分為位元組流和字元流:
說明 | 位元組流 | 字元流 |
抽象基類 | InputStream,OutputStream | Reader,Writer |
節點流 | FileInputStream,FileOutputStream | FileReader,FileWriter |
緩衝流 | BufferdInputStream,BufferdOutputStream | BufferdReader,BufferdWriter |
轉換流 | InputStreamReader,OutputStreamWriter | |
* FileInputStream和BufferdInputStreamd包含同樣的方法,FileOutputStream和BufferdOutputStream用法相同,只不過前者會清空檔案內容寫入,後者會在原來的檔案內容後面追加
* BufferdReader提供了一個緩衝區,可以一次讀一整行(readLine())
* inputStreamReader / outPutStreamReader 可以把位元組流轉換為位元組流
位元組流實現檔案複製
/** * 位元組流,讀寫以byte為單位 * Created on 2018年9月5日<br> */ public class ByteTest { public static void main(String[] args) throws IOException { File file = new File("C:/Users/26725/Desktop/test.txt"); File file1 = new File("C:/Users/26725/Desktop/testout.txt"); if (!file.exists()) { file.createNewFile(); } FileInputStream fis = new FileInputStream(file); FileOutputStream fos = new FileOutputStream(file1); byte[] buffer = new byte[4]; int length; while(-1!= (length=fis.read(buffer))){ String s = new String(buffer,0,length); //每次讀完都需要清空buffer byte[] bytes = s.getBytes(); fos.write(bytes); } fis.close(); fos.close(); } }
字元流實現檔案複製
/**
* 字元流,讀寫以char為單位,速度更快
* Created on 2018年9月5日<br>
*/
public class CharTest {
public static void main(String[] args) throws IOException{
File file = new File("C:\\Users\\26725\\Desktop\\test.txt");
File file2 = new File("C:\\Users\\26725\\Desktop\\testout.txt");
//因為亂碼,通過inputStreamReader和OutputStreamWriter轉碼
InputStreamReader isr = new InputStreamReader(new FileInputStream(file) ,"utf-8");
BufferedReader reader = new BufferedReader(isr);
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file2),"utf-8"));
char[] chars = new char[2];
int length;
while (-1!=(length=reader.read(chars))) {
String s = new String(chars,0,length);
writer.write(s);
}
reader.close();
writer.close();
}
}