欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java IO流之字符流的使用詳解

 更新時間:2022年08月25日 09:37:15   作者:糊涂涂是個小盆友  
這篇文章主要圍繞Java中的字符流進(jìn)行介紹,包括字符輸入流、字符輸出流以及處理流異常的幾種方式。文中的示例代碼講解詳細(xì),感興趣的可以了解一下

一、字符流的出現(xiàn)

中文在GBK中占有兩個字節(jié),在utf-8中占有三個字節(jié)(即需要三個字節(jié)才能組成一個中文字),字節(jié)流讀取中文時由于編碼集的不同,字節(jié)流讀取中文也比較麻煩,從而出現(xiàn)了字符流

字符流也在java.io包下

二、字符輸入流Reader

①、是一個接口類

②、里面提供了一些共性的方法,供子類使用

方法描述
int read()讀取單個字符并返回
int read(char[] c)一次性讀取多個字符,將數(shù)據(jù)放入數(shù)組
void close()釋放資源

三、文件字符輸入流 FileReader

①、FileReader extends InputStreamReader extends Reader

②、構(gòu)造方法

FileReader(String filename)

FileReader(File file)

參數(shù):讀取文件的數(shù)據(jù)源

作用:創(chuàng)建FileReader對象、把FileReader對象指向要讀取的文件

③、步驟

1、創(chuàng)建FileReader對象并綁定數(shù)據(jù)源

2、使用對象的read方法讀取數(shù)據(jù)

3、釋放資源

④、代碼編程(讀取單個字符)

import java.io.FileReader;
import java.io.IOException;

public class ReaderTest {
    public static void main(String[] args) {
        try {
            // 1、創(chuàng)建FileReader對象
            FileReader fr = new FileReader("E:\\JavaCode\\JavaSE\\Day8-24\\src\\a.txt");
            // 2、調(diào)用read方法
            int len = 0;
            while ((len = fr.read())!=-1){
                System.out.println((char)len);
            }
            // 3、釋放資源
            fr.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

⑤、代碼編程(一次性讀取多個字符)

try {
            // 1、創(chuàng)建FileReader對象
            FileReader fr = new FileReader("E:\\JavaCode\\JavaSE\\Day8-24\\src\\a.txt");
            // 2、調(diào)用read方法
            char[] c = new char[1024];
            int len = 0;
            while ((len = fr.read(c))!=-1){
                System.out.println(new String(c,0,len));
            }
            // 3、釋放資源
            fr.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

四、字符輸出流 Writer

共性的成員方法

方法介紹
void write(int c)寫入單個字符
void write(char[] c)寫入字符數(shù)組
abstract void write(char[] c,int off,int len)寫入字符數(shù)組的某一部分,off為數(shù)組的開始索引,len為寫入的字符個數(shù)
void write(String str)寫入字符串
void write(String str,int off,int len)寫入字符串的某一部分,off為字符開始索引,len為寫的字符個數(shù)
void flush()刷新該流的緩沖
void close()釋放資源

五、文件字符輸出流 FileWriter

①、FileWriter extends OutputStreamWriter extends Writer

②、構(gòu)造方法

方法介紹
FileWriter (File file)根據(jù)給定的file對象構(gòu)造一個FileWriter對象
FileWriter (String filename)根據(jù)給定 的文件名構(gòu)造一個FileWriter對象

參數(shù):寫入數(shù)據(jù)的目的地

③、使用步驟

1、創(chuàng)建FileWriter對象,構(gòu)造方法中綁定要寫入數(shù)據(jù)的目的地

2、使用FileWriter中的方法write,把數(shù)據(jù)寫入到內(nèi)存緩沖區(qū)中(字符轉(zhuǎn)換為字節(jié)的過程)

3、使用FileWriter中的方法flush,把內(nèi)存緩沖區(qū)中的數(shù)據(jù)刷新到文件中(必須有這一步)

4、釋放資源

④、代碼描述

import java.io.FileWriter;
import java.io.IOException;

public class WriterTest {
    public static void main(String[] args) {
        try {
            // 1、創(chuàng)建對象
            FileWriter fw = new FileWriter("E:\\JavaCode\\JavaSE\\Day8-24\\src\\a.txt",true);
            // 2、寫入數(shù)據(jù)
            fw.write("好么");
            // 3、刷新
            fw.flush();
            // 4、釋放資源
            fw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

六、close()和flush()的區(qū)別

close()釋放資源后不能夠再使用流進(jìn)行相關(guān)的操作

flush()刷新后還能夠再操作

七、換行和續(xù)寫

與字節(jié)流中的換行和續(xù)寫一致

續(xù)寫:

在使用構(gòu)造函數(shù)的時候傳入兩個參數(shù),第一個參數(shù)是文件的路徑,第二個參數(shù)是是否續(xù)寫(為true表示續(xù)寫false則表示不續(xù)寫直接覆蓋)

換行:

在Windows系統(tǒng)中換行符號為 \r\n

在linux系統(tǒng)中換行符號為 /n

在Mac系統(tǒng)中換行符號為 /r

八、使用try-catch-finally處理流異常

try{
    可能會產(chǎn)出異常的代碼
}catch(異常類變量 變量名){
    異常的處理邏輯
}finally{
    一定會執(zhí)行的代碼
    資源釋放
}

今天只進(jìn)行簡單的介紹,后續(xù)會專門出一期jdk7和jdk9中處理流異常的對比

到此這篇關(guān)于Java IO流之字符流的使用詳解的文章就介紹到這了,更多相關(guān)Java字符流內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java批量從svn導(dǎo)出多個項目代碼實例

    Java批量從svn導(dǎo)出多個項目代碼實例

    這篇文章主要介紹了java批量從svn導(dǎo)出多個項目代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • 用java實現(xiàn)斗地主發(fā)牌過程

    用java實現(xiàn)斗地主發(fā)牌過程

    這篇文章主要為大家詳細(xì)介紹了用java實現(xiàn)斗地主發(fā)牌過程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 如何使用SpringBootCondition更自由地定義條件化配置

    如何使用SpringBootCondition更自由地定義條件化配置

    這篇文章主要介紹了如何使用SpringBootCondition更自由地定義條件化配置,幫助大家更好的理解和學(xué)習(xí)使用springboot框架,感興趣的朋友可以了解下
    2021-04-04
  • java 實現(xiàn)圖片圓角處理、背景透明化

    java 實現(xiàn)圖片圓角處理、背景透明化

    這篇文章主要介紹了java 實現(xiàn)圖片圓角處理、背景透明化,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • IDEA-SpringBoot項目Debug啟動不了(卡住不動)的原因分析

    IDEA-SpringBoot項目Debug啟動不了(卡住不動)的原因分析

    這篇文章主要介紹了IDEA-SpringBoot項目Debug啟動不了(卡住不動)的原因分析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 解決mybatis generator MySQL自增ID出現(xiàn)重復(fù)問題MySQLIntegrityConstraintViolationException

    解決mybatis generator MySQL自增ID出現(xiàn)重復(fù)問題MySQLIntegrityC

    在MySQL中使用MyBatis時,可能會遇到由于主鍵重復(fù)導(dǎo)致的插入失敗問題,此問題通常發(fā)生在連續(xù)插入多條數(shù)據(jù)時,如果selectKey的order配置錯誤,如使用BEFORE而不是AFTER,將會導(dǎo)致獲取的ID未更新,引起主鍵重復(fù)錯誤,正確的配置應(yīng)使用AFTER
    2024-10-10
  • java.lang.NullPointerException出現(xiàn)的幾種原因及解決方案

    java.lang.NullPointerException出現(xiàn)的幾種原因及解決方案

    這篇文章主要介紹了java.lang.NullPointerException出現(xiàn)的幾種原因及解決方案,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 快速入門HarmonyOS的Java UI框架的教程

    快速入門HarmonyOS的Java UI框架的教程

    這篇文章主要介紹了快速入門HarmonyOS的Java UI框架,本文給大家介紹的非常詳細(xì)對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • SpringBoot應(yīng)用監(jiān)控帶郵件警報的實現(xiàn)示例

    SpringBoot應(yīng)用監(jiān)控帶郵件警報的實現(xiàn)示例

    本文主要介紹了SpringBoot應(yīng)用監(jiān)控帶郵件警報的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • JavaWeb 中Cookie實現(xiàn)記住密碼的功能示例

    JavaWeb 中Cookie實現(xiàn)記住密碼的功能示例

    cookie是一種WEB服務(wù)器通過瀏覽器在訪問者的硬盤上存儲信息的手段。Cookie的目的就是為用戶帶來方便,為網(wǎng)站帶來增值。這篇文章主要介紹了JavaWeb 中Cookie實現(xiàn)記住密碼的功能示例,需要的朋友可以參考下
    2017-06-06

最新評論