IO流是用來處理設備之間的數據傳輸的,諸如:文件的複製,上傳下載文件java
Java中的流能夠從不一樣的角度進行分類:linux
- 按照流的方向不一樣:分爲輸入流和輸出流。數組
- 按照處理數據單位的不一樣:分爲字節流和字符流。緩存
- 按照功能不一樣:分爲節點流和處理流ide
要區分字符流和字節流,咱們能夠從類名來區分url
類名中包含Reader:字符流 輸入流spa
類名中包含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流寫數據的內容,下次分享字符流讀數據的內容.