IO流--字符流寫數據
IO流是用來處理設備之間的數據傳輸的,諸如:文件的復制,上傳下載文件
Java中的流可以從不同的角度進行分類:
- 按照流的方向不同:分為輸入流和輸出流。
- 按照處理數據單位的不同:分為字節流和字符流。
- 按照功能不同:分為節點流和處理流
要區分字符流和字節流,我們可以從類名來區分
類名中包含Reader:字符流 輸入流
類名中包含Writer:字符流 輸出流
類名中包含Input:字節流 輸入流
類名中包含Output:字節流 輸出流
包含Stream:字節流
今天著重來看下字符流.
Write顧名思義就是寫的意思,FileWriter(String fileName) 指的是傳遞一個文件的名稱
成員方法:
void write(String str) 往文件中寫入一個字符串
void flush() 刷新該流的緩沖,把內存緩沖區中的數據刷新到新的文件中去
void close() 關閉此流,但是要先刷新它
輸出流寫數據的一般步驟(也是最基本的步驟)
1.創建輸出流對象
2.調用輸出流對象寫數據的方法
3.刷新緩存,寫入文件
4.釋放資源.
舉例:
import java.io.FileWriter; import java.io.IOException; public class DemoFileWriter { public static void main(String[] args) throws IOException { //1.創建輸出流對象,導包和拋出異常(此次為演示,不解決異常) FileWriter fw = new FileWriter("a.txt"); /** * 創建輸出流對象做了如下幾件事情 * A.調用系統資源創建了一個文件a.txt * B.創建了輸出流對象 * C.把輸出流對象指向文件 */ //2.調用輸出流對象寫數據的方法write() 寫一個字符串 fw.write("IO流大法好"); /* * 3.此時數據是寫在了緩存中,所以需要做接下來的第三步,刷新緩存. */ fw.flush(); //4.通知系統釋放資源,釋放之後再調用writer() 就沒有作用了 fw.close(); } }
這裏需要區分關閉close()和刷新flush()方法的區別.
1.flush(); 刷新緩沖區,刷新後流對象還可以繼續用
2.close(); 釋放資源,在釋放前會強制刷新緩沖區.釋放後流對象就不能再使用了.
FileWriter寫數據的5個方法:
1.寫一個字符串數據 void write(String str);
2.寫一個字符串中的一部分數據,index開始索引,len表示寫幾個 ,void write(String str, int len);
3.寫一個字符數據, void write(int ch) 這裏之所以用int,是因為char類型的數據也對應著int數值.比如
‘a‘ 97
4.寫一個字符數組的數據 void write(char[] chs);
5.寫一個字符數組的一部分數據,index:開始索引,len寫幾個 void write(char[] chs,int index,int len);
舉個栗子:
import java.io.FileWriter; import java.io.IOException; public class DemoFileWriter { public static void main(String[] args) throws IOException { //1.創建輸出流對象,導包和拋出異常(此次為演示,不解決異常) FileWriter fw = new FileWriter("a.txt"); // 寫入一個字符串數據 void write(String str); fw.write("abcde"); //寫一個字符串中的一部分數據 fw.write("abcde",1,3); //寫一個字符數組數據 char[] chs = {‘a‘,‘b‘,‘c‘,‘d‘}; fw.write(chs); //寫完數據不要忘記刷新和關閉,要不然文件裏會沒有數據 fw.flush(); fw.close(); } }
如果需要在文件中添加換行怎麽辦呢?
Windows中的換行: \r\n
linux 中 的換行 \n
這就是關於IO流寫數據的內容,下次分享字符流讀數據的內容.
本文出自 “xinsz08の平行時空” 博客,請務必保留此出處http://xinsz08.blog.51cto.com/10565212/1941451
IO流--字符流寫數據