A. FileWriter進行write()操作時,先將數據寫入緩沖區,再刷新寫入,為什麼還要用BufferedWriter
BufferedWriter bw = new BufferedWriter(new FileWriter( "filename "));
一般寫文件時經常這么用,表示加了一個緩沖,緩沖寫滿後在將數據寫入硬碟,這樣做極大的提高了性能
如果單獨使用 FileWriter每寫一個數據,硬碟就有一個寫動作,頻繁寫硬碟,對性能有影響。
B. 用FileReader的read()方法實現讀字元文件,FileWriter的write()方法實現寫字元文件
如果讀到文件末尾,read()方法會返回-1,如:
public static void main(String[] args) throws Exception {
FileReader fr = new FileReader("f:/test.txt");
try {
int i;
while ((i = fr.read()) != -1) {
System.out.print((char) i);
}
} finally {
fr.close();
}
}
C. java如何使用文件字元輸出流FileWriter
文件字元輸出流繼承自Writer類,提供了向文件輸出的各種方法,數據通過文件字元輸出流以字元為單位輸出並保存到文件中
D. java中使用FileWriter流寫入文件數據,只能寫一部分,什麼原因,求解答
BufferedWriter bu=new BufferedWriter(new FileWriter("file.txt")); String filetxt=jTextArea1.getText(); String pp[]=filetxt.split("\n"); for(int i=0;i<pp.length;i++){ bu.write(pp[i]); bu.newLine(); } bu.flush(); bu.close(); JOptionPane.showMessageDialog(this,"文件保存成功"); //就這樣 放到你按鈕的事件下就可以了 jTextArea1 是文本域 file.txt 是文件名 可以改成絕對路徑
E. Java filewriter括弧里得地址後面寫true和false有什麼用
您好,提問者:
如果FileWriter("dir",true);的話表示這個文件不會被重新生成,會覆蓋。
而且寫入的內容是從這個文件的結尾開始寫入。
說白了就是續寫,原來的內容還在。
F. 為什麼java中只有FileWriter的時候要注意用flush,OutputStreamWriter和OutputStream沒提到用flush方法。
因為FileWriter是將字元寫入文件中,flush方法可以及時將緩沖區的內容寫入文件,以刷新文件的內容。這樣,共享此文件的其它使用者,不用一直等到你的程序結束,就能看到最新的內容。
G. 關於 FileWriter 和 OutputStreamWriter
FileWriter是OutputStreamWriter的子類,裡面沒有實現子類方法也就是FileWriter完全使用的是父類OutputStreamWriter已有的方法 就是FileWriter提供了很多方便的構造函數
簡單來說:
對於一個已有的File對象file
可以直接構造出一個FileWriter
FileWriter fw =new FileWriter(file);
而不能直接構造出一個OutPutStreamWriter
OutputStreamWriter outputStreamWriter =new OutputStreamWriter(new FileOutputStream(new File("xxx")));
而使用上無差別
H. FileWriter中的某個方法詳解
public void write(int c) throws IOException寫入單個字元
你想想..參數明明是int..怎麼是寫入單個字元呢..
在java中..字元採用的編碼是Unicode編碼..Unicode是2個位元組..0-65535吧..貌似..所以那個int對應的就是該字元的Unicode編碼..
但是..int是4個位元組..
比如你調用write(2);..
將2轉換為2進制是10..如果是int就是4個位元組..那麼就是..00000000000...10共32位..
而Unicode只有2個位元組16位..
怎麼辦呢..所以他忽略16高位..也就是前面的16位..取後16位..取出來就是0000000...10共16位..值還是沒變..也就是說如果你傳的值小於65535都不會有任何問題的..如果大於的話..就去掉高位的了..
如果你想用這個方法寫入"Hello Java"的話..
直接
FileWriter fw = new FileWriter("test.txt");
char[] cs = "Hello Java".toCharArray();//轉換為字元數組
for(char c : cs) {
fw.write(c);//直接這樣就行..他會自動轉換為其Unicode編碼..或者fw.write((int)c);強制轉換一下也行
}
fw.flush();
fw.close();
I. Java中FileWriter和Writer有什麼分別
Writer是一個 abstract 的類,不能直接初始化,只是,提供了 輸出的基本包裝
FileWriter 是 採用 FileOutputStream 作為Writer 輸出的源
writer 對FileOutputStream 進行了包裝。讓你輸出的時候,不用在一個個位元組的輸出,可以一行行的輸出