FileWriter和FileReader是用來實現將字符讀寫到文件的IO類。
1.FileWriter
是用來方便的將字符數據寫入文件的類,這個類的構造函數假設默認的字符編碼方式和緩衝區大小的可被接受的,如果要改變指定編碼和緩衝區大小可以用FileOutputStream來構造一個OutputStreamWriter來實現。
當文件沒有找到時,一般是可以自動創建文件,但這也和平臺有關,有的平臺不允許創建文件。FileWriter是用來寫字符流的,如果要寫字節流數據,請使用FileOutputStream。主要的構造函數有:
FileWriter(File file)
用File對象來構造FileWriter,寫數據時,從文件開頭開始寫起,會覆蓋以前的數據
FileWriter(File file, boolean append)
還是用File對象構造,如果第二個參數爲true的話,表示以追加的方式寫數據,從文件尾部開始寫起
FileWriter(FileDescriptor fd)
用文件描述符來構造FileWriter
FileWriter(FileDescriptor fd, boolean append)
用文件描述符來構造,第二個參數爲true的話,表示以追加的形式寫入數據
FileWriter(String fileName)
用文件的路徑名來構造FileWriter
FileWriter(String fileName,boolean append)
用文件路徑名來構造FileWriter,第二個參數爲true的話,表示以追加的形式寫入文件
大部分方法集成於Writer,請點擊這裏查看;其他主要方法有:
String getEncoding()
查看編碼方式,返回時編碼範式
void write(char[] cbuf, int off, int len)
將字符數組的一部分寫入到流中。將cbuf[off],cbuf[off+1],…,cbuf[off+len-1]部分字符
寫入到流中,但能不能寫len個字符取決於cbuf中是否有那麼多
2.FileReader
用來方便的從文件中讀出字符的類,默認編碼和默認緩衝區大小假設是可以接受的。如果要改變默認編碼和默認緩衝區大小可以用FileInputStream來構造InputStreamReader來實現。FileReader意味着是用來讀字符的流,要實現讀取字節流,請考慮使用FileInputStream。
構造函數有:
FileReader(File file)
用File對象來構造FileReader
FileReader(FileDescriptor fd)
用文件描述符構造FileReader
FileReader(String fileName)
用文件的路徑名來構造FileReader
主要的函數大多集成於Reader類,請點擊這裏查看。其他主要的函數有:
public String getEncoding()
返回這個流使用的編碼方式
3.例子
實現向文件中寫入字符串,寫入中文,寫入數字等。注意Reader和Writer是用來的字符進行寫入的,如果直接將int型數據作爲參數的話,是不會寫入數字的,而是現將數字按照ascll碼錶轉換爲相應的字符,然後再寫入。要想實現數字和中文的寫入,必須要用String爲參數的Write。
FileWriter寫入例子:
import java.io.FileWriter;
import java.io.IOException;
public class FileTest {
public static void main(String[] args) throws IOException{
String filePath = "G:\\test2.txt";
FileWriter fw = new FileWriter(filePath);
String str="sdndanudn中華人民共和國主席,daduca1266d8523189588";
int type = 103658;
char ch = 'A';
fw.write(str);
fw.write('\n');
fw.write(type+""); //若直接用type作爲參數,寫入的是type按ascll碼對應的字符
fw.write('\n'); //換行符也可以直接寫入
fw.write(ch); //字符可以直接寫入
fw.flush();
fw.close();
}
}
FileReader例子代碼:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class FileTest {
public static void main(String[] args) throws IOException{
String filePath = "G:\\test2.txt"; //文件路徑
FileReader fd = new FileReader(filePath); //構造FileReader
char[] chs = new char[1024];
while(fd.read(chs) != -1){ //每次讀1024個字符
System.out.print(chs);
}
}
}
運行結果:
寫入文件
文件讀出