簡介
如果看了上一篇 FileInputStream和FileOutputStream讀寫文件,然後實現文件的拷貝。那麼對與這篇就是小菜一碟。唯一區別在於上一個是基於字節流,這個基於字符流。字節流就用byte數組充當緩存,字符流用char數組即可。
文件拷貝
package FileReaderWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class FileChar {
public static void main(String[] args) throws IOException {
Scanner input=new Scanner(System.in);
//寫
System.out.println("請輸入文件名:");
String name=input.next();
File file=new File(name+".txt");
System.out.println("請輸入要寫入的內容:");
String str=input.next();
FileWriter fw=new FileWriter(file,true);
// char []cha=str.toCharArray();
// fw.write(cha,0,cha.length);
fw.write(str);//writ()參數裏面有寫入字符串類型的
fw.flush();//刷新流
fw.close();
System.out.println("寫入完畢!");
//讀
FileReader fr=new FileReader(file);
char chars[]=new char[512]; //每次最多讀1kb
int temp=0;
while((temp=fr.read(chars))!=-1){
System.out.println(new String(chars,0,temp));
}
fr.close();
}
}
當我們在寫文件時,可以將要寫入的數據轉換成char數組,然後再通過write(數組名,0,數組的長度)寫入,也可以直接通過write(字符串)。String就相當於由多個字符組成,char數組保存的就是多個字符。
文件拷貝
package FileReaderWriter;
import java.io.*;
public class Copy_Char {
public static void main(String[] args) throws IOException {
File file=new File("1.txt");
if(!file.isFile()){
System.out.println("文件不存在,無法拷貝!");
return;
}
FileReader fr=new FileReader(file);
FileWriter fw=new FileWriter("src\\"+file.getName()); //拷貝到src下面
char chars[]=new char[512];
int temp=0;
while ((temp=fr.read(chars))!=-1){
fw.write(chars,0,temp);
}
fw.flush();
fw.close();
fr.close();
System.out.println("拷貝成功!");
}
}
Java中對文件進行操作時,就會用這4個文件流:FileOutputStream,FileInputStream,FileReader,FileWriter。然後根據需求選擇合適的流。
每日雞湯:請不要假裝很努力,因爲結果不會陪你演戲!
Over!