成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java知識點總結(JavaIO-字符流)

thekingisalwaysluc / 3450人閱讀

摘要:使用字節(jié)流寫入文件,如果沒有關閉字節(jié)流操作,文件依然存在內容,說明字節(jié)流是操作文件本身的。字節(jié)流比字符流更好,使用更廣泛。

Java知識點總結(JavaIO-字符流)

@(Java知識點總結)[Java, JavaIO]

[toc]

在程序中一個字符等于兩個字節(jié),那么 Java 提供了 Reader 和 Writer 兩個專門操作字符流的類。

字符輸出流:Writer

類定義如下:

public  abstract class Writer extends Object implements Appendable,Closeable,Flushable

Appendable 接口表示內容可以被追加,接收的參數是CharSequence,實際上 String 類就實現了此接口,所以可以直接通過此接口的方法向輸出流中追加內容。

字符輸入流:Reader
 
public  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));
 
  }
 
  // 使用循環(huán)方式讀取內容
  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));
 
  }
 
  // 強制性清空緩沖區(qū)
  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();
    }
  }
} 

字節(jié)流和字符流的區(qū)別

字符流在操作時使用了緩沖區(qū)(內存),通過緩沖區(qū)再操作文件。

使用字節(jié)流寫入文件,如果沒有關閉字節(jié)流操作,文件依然存在內容,說明字節(jié)流是操作文件本身的。

使用字符流寫入文件,如果沒有關閉字符流操作,文件中沒有任何內容,這是因為字符流使用了緩沖區(qū),關閉字符流時會強制性的將緩沖區(qū)中的內容進行輸出,但是如果程序沒有關閉,則緩沖區(qū)的內容無法輸出,所以文件中沒有內容。

緩沖區(qū):如果一個程序頻繁地操作一個資源(如文件或數據庫),則性能會很低,此時為了提升性能,就可以將一部分數據暫時讀入到內存的一塊區(qū)域之中,以后直接從此區(qū)域中讀取數據即可,因為讀取內存速度會比較快。

在字符流操作中,所有的字符都是在內存中形成的,在輸出前會將所有的內容暫時保存在內存之中,所以使用了緩沖區(qū)暫存數據。

字節(jié)流比字符流更好,使用更廣泛 。

所有的文件在硬盤或傳輸時都是以字節(jié)的方式進行的,包括圖片等都是按字節(jié)的方式存儲的,而字符是自由在內存中才會形成,所以在開發(fā)中,字節(jié)流使用較為廣泛。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/69158.html

相關文章

  • Java識點總結JavaIO-轉換

    摘要:知識點總結轉換流知識點總結是的子類,將一個字符流的輸出對象變?yōu)樽止?jié)流的輸出對象。將字節(jié)輸出流轉為字符輸出流字節(jié)流轉為字符流蘋果將字節(jié)輸入流轉為字符輸入流內容是 Java知識點總結(JavaIO-轉換流) @(Java知識點總結)[Java, JavaIO] [toc] showImg(https://segmentfault.com/img/bV82dQ?w=849&h=226); O...

    luckyyulin 評論0 收藏0
  • Java識點總結JavaIO-打印

    摘要:知識點總結打印流知識點總結打印流是輸出信息最方便的類,主要包括字節(jié)打印流和字符打印流??梢源蛴∪魏螖祿愋?,小數,整數,字符串等。格式化輸出姓名年齡分數性別 Java知識點總結(JavaIO-打印流) @(Java知識點總結)[Java, JavaIO] [toc] 打印流是輸出信息最方便的類,主要包括字節(jié)打印流(PrintStream)和字符打印流(PrintWriter)。 可...

    wenzi 評論0 收藏0
  • Java識點總結JavaIO- BufferedReader類 )

    摘要:知識點總結類知識點總結類用于從緩沖區(qū)中讀取內容,所有的輸入字節(jié)數據都將放在緩沖區(qū)中中定義的構造方法只能接收字符輸入流的實例,所以必須使用字符輸入流和字節(jié)輸入流的轉換類將字節(jié)輸入流轉變?yōu)樽址鳌? Java知識點總結(JavaIO- BufferedReader類) @(Java知識點總結)[Java, JavaIO] [toc] showImg(https://segmentfault....

    alanoddsoff 評論0 收藏0
  • Java識點總結JavaIO-字節(jié)

    摘要:知識點總結字節(jié)流知識點總結字節(jié)流在程序中所有的數據都是以流的方式進行傳輸或保存的,程序需要數據時要使用輸入流讀取數據,而當程序需要將一些數據保存起來時,就要使用輸出流。字節(jié)流主要操作類型數據,以數組為準,主要操作類是類和類。 Java知識點總結(JavaIO-字節(jié)流) @(Java知識點總結)[Java, JavaIO] [toc] 字節(jié)流 在程序中所有的數據都是以流的方式進行傳輸或保...

    BigTomato 評論0 收藏0
  • Java識點總結JavaIO-合并類)

    摘要:知識點總結合并流類知識點總結合并流的主要功能是將兩文件的內容合并成一個文件字節(jié)在多文件的應用場景下非常高效,因為是將多個流串聯起來,形成一個流,便于操作 Java知識點總結(JavaIO- 合并流類 ) @(Java知識點總結)[Java, JavaIO] [toc] showImg(https://segmentfault.com/img/bV9a9X?w=853&h=164); 合...

    iliyaku 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<