摘要:使用字節流寫入文件,如果沒有關閉字節流操作,文件依然存在內容,說明字節流是操作文件本身的。字節流比字符流更好,使用更廣泛。
Java知識點總結(JavaIO-字符流)
@(Java知識點總結)[Java, JavaIO]
[toc]
在程序中一個字符等于兩個字節,那么 Java 提供了 Reader 和 Writer 兩個專門操作字符流的類。
字符輸出流:Writer類定義如下:
public abstract class Writer extends Object implements Appendable,Closeable,Flushable
Appendable 接口表示內容可以被追加,接收的參數是CharSequence,實際上 String 類就實現了此接口,所以可以直接通過此接口的方法向輸出流中追加內容。
字符輸入流:Readerpublic abstract class Reader extends Object implements Readable,Closeable
import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.Reader; import java.io.Writer; public class Demo04 { // 輸出文件內容 public static void test1() throws IOException { File file = new File("E:" + File.separator + "test.txt"); Writer fw = new FileWriter(file); String str = "Hello world!"; fw.write(str); fw.close(); } // 追加文件內容 public static void test2() throws IOException { File file = new File("E:" + File.separator + "test.txt"); Writer fw = new FileWriter(file, true); String str = " Hello world!"; fw.write(str); fw.close(); } // 從文件中讀取內容 public static void test3() throws IOException { File file = new File("E:" + File.separator + "test.txt"); Reader fr = new FileReader(file); char[] c = new char[(int) file.length()]; int len = fr.read(c); // 返回值是讀取的字符數 fr.close(); System.out.println("內容是:" + new String(c, 0, len)); } // 使用循環方式讀取內容 public static void test4() throws IOException { File file = new File("E:" + File.separator + "test.txt"); Reader fr = new FileReader(file); char[] c = new char[(int) file.length()]; int temp = 0; int len = 0; while((temp = fr.read()) != -1){ c[len] = (char)temp ; len ++; } fr.close(); System.out.println("內容是:" + new String(c,0,len)); } // 強制性清空緩沖區 public static void test5() throws IOException { File file = new File("E:" + File.separator + "test.txt"); Writer fw = new FileWriter(fil e); String str = "Hello world!"; fw.write(str); fw.flush(); //fw.close(); } public static void main(String[] args) { try { /*test1(); test2(); test4();*/ test5(); } catch (IOException e) { e.printStackTrace(); } } }字節流和字符流的區別
字符流在操作時使用了緩沖區(內存),通過緩沖區再操作文件。
使用字節流寫入文件,如果沒有關閉字節流操作,文件依然存在內容,說明字節流是操作文件本身的。
使用字符流寫入文件,如果沒有關閉字符流操作,文件中沒有任何內容,這是因為字符流使用了緩沖區,關閉字符流時會強制性的將緩沖區中的內容進行輸出,但是如果程序沒有關閉,則緩沖區的內容無法輸出,所以文件中沒有內容。
緩沖區:如果一個程序頻繁地操作一個資源(如文件或數據庫),則性能會很低,此時為了提升性能,就可以將一部分數據暫時讀入到內存的一塊區域之中,以后直接從此區域中讀取數據即可,因為讀取內存速度會比較快。
在字符流操作中,所有的字符都是在內存中形成的,在輸出前會將所有的內容暫時保存在內存之中,所以使用了緩沖區暫存數據。
字節流比字符流更好,使用更廣泛 。
所有的文件在硬盤或傳輸時都是以字節的方式進行的,包括圖片等都是按字節的方式存儲的,而字符是自由在內存中才會形成,所以在開發中,字節流使用較為廣泛。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69158.html
摘要:知識點總結轉換流知識點總結是的子類,將一個字符流的輸出對象變為字節流的輸出對象。將字節輸出流轉為字符輸出流字節流轉為字符流蘋果將字節輸入流轉為字符輸入流內容是 Java知識點總結(JavaIO-轉換流) @(Java知識點總結)[Java, JavaIO] [toc] showImg(https://segmentfault.com/img/bV82dQ?w=849&h=226); O...
摘要:知識點總結打印流知識點總結打印流是輸出信息最方便的類,主要包括字節打印流和字符打印流。可以打印任何數據類型,小數,整數,字符串等。格式化輸出姓名年齡分數性別 Java知識點總結(JavaIO-打印流) @(Java知識點總結)[Java, JavaIO] [toc] 打印流是輸出信息最方便的類,主要包括字節打印流(PrintStream)和字符打印流(PrintWriter)。 可...
摘要:知識點總結類知識點總結類用于從緩沖區中讀取內容,所有的輸入字節數據都將放在緩沖區中中定義的構造方法只能接收字符輸入流的實例,所以必須使用字符輸入流和字節輸入流的轉換類將字節輸入流轉變為字符流。 Java知識點總結(JavaIO- BufferedReader類) @(Java知識點總結)[Java, JavaIO] [toc] showImg(https://segmentfault....
摘要:知識點總結字節流知識點總結字節流在程序中所有的數據都是以流的方式進行傳輸或保存的,程序需要數據時要使用輸入流讀取數據,而當程序需要將一些數據保存起來時,就要使用輸出流。字節流主要操作類型數據,以數組為準,主要操作類是類和類。 Java知識點總結(JavaIO-字節流) @(Java知識點總結)[Java, JavaIO] [toc] 字節流 在程序中所有的數據都是以流的方式進行傳輸或保...
摘要:知識點總結合并流類知識點總結合并流的主要功能是將兩文件的內容合并成一個文件字節在多文件的應用場景下非常高效,因為是將多個流串聯起來,形成一個流,便于操作 Java知識點總結(JavaIO- 合并流類 ) @(Java知識點總結)[Java, JavaIO] [toc] showImg(https://segmentfault.com/img/bV9a9X?w=853&h=164); 合...
閱讀 2229·2019-08-30 10:51
閱讀 785·2019-08-30 10:50
閱讀 1463·2019-08-30 10:49
閱讀 3130·2019-08-26 13:55
閱讀 1591·2019-08-26 11:39
閱讀 3412·2019-08-26 11:34
閱讀 1937·2019-08-23 18:30
閱讀 3381·2019-08-23 18:22