最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的字符流FileReader與FileWriter詳解

 更新時間:2023年10月16日 09:56:35   作者:墨辰JC  
這篇文章主要介紹了Java中的字符流FileReader與FileWriter詳解,在Java中,使用Unicode約定存儲字符,字符流自動允許我們逐字符讀/寫數(shù)據(jù),有助于執(zhí)行16位Unicode的輸入和輸出,它是以reader和writer結(jié)尾的,需要的朋友可以參考下

概念

在Java中,使用Unicode約定存儲字符。字符流自動允許我們逐字符讀/寫數(shù)據(jù),有助于執(zhí)行16位Unicode的輸入和輸出;它是以reader和writer結(jié)尾的。

在內(nèi)部,F(xiàn)ileReader使用FileInputStream;

同樣,F(xiàn)ileWrite使用FileOutputStream,字符流采用Unicode編碼。

FileReader字符輸入流

Reader :字符輸入流,用于讀取字符流的抽象超類。

FileReader類從InputStreamReader類繼承而來。和文件相關(guān)的字符輸入流,可用于讀取文件數(shù)據(jù)。創(chuàng)建對象的時候,如果指定的文件不存在,將拋出異常。

在這里插入圖片描述

相關(guān)方法和構(gòu)造器

FileReader提供了三個構(gòu)造器,用于實例化FileReader對象,根據(jù)不同的場景進行選擇

在這里插入圖片描述

  • read():每次讀取單個字符,返回該字符,如果到文件末尾返回-1
public int read();
  • read(char[]):批量讀取多個字符到數(shù)組,返回讀取到的字符數(shù),如果到文件末尾返回-1
public int read(char[] cbuf);

演示示例

使用FileReader從E盤下的hello.txt文本讀取內(nèi)容,并顯示

  • read():單個字符讀取文件(返回實際讀取到的字符數(shù))
import org.junit.jupiter.api.Test;
import java.io.FileReader;
import java.io.IOException;

@Test
public void readFile01(){
    String filePath = "E:\\test.txt";
    FileReader fileReader = null;//創(chuàng)建FileReader對象
    int data;
    try {
        fileReader= new FileReader(filePath);
        //循環(huán)讀取
        while ((data = fileReader.read())!=-1){
            System.out.print((char) data);
        }
    } catch (IOException e) {
        e.getMessage();
    }finally {
        if (fileReader!=null){
            try {
                fileReader.close();//釋放內(nèi)存
            } catch (IOException e) {
                e.getMessage();
            }
        }
    }
}
  • read(Char[] cbuf) 使用字符數(shù)組讀取文件 這里使用了String的構(gòu)造器用于將buf轉(zhuǎn)換為字符串

在這里插入圖片描述

@Test
public void readFile02() {
    String filePath = "E:\\test.txt";
    FileReader fileReader = null;//創(chuàng)建FileReader對象
    int readLen = 0;
    char[] buf = new char[8];
    try {
        fileReader = new FileReader(filePath);
        //
        while ((readLen = fileReader.read(buf)) != -1) {
            System.out.print(new String(buf, 0, readLen));
        }
    } catch (IOException e) {
        e.getMessage();
    } finally {
        if (fileReader != null) {
            try {
                fileReader.close();//釋放內(nèi)存
            } catch (IOException e) {
                e.getMessage();
            }
        }
    }
}

執(zhí)行完畢之后,會讀取到文本中相應(yīng)的內(nèi)容!

FileWriter字符輸出流

FileWriter 類從 OutputStreamWriter 類繼承而來。該類按字符向流中寫入數(shù)據(jù)。與FileOutputStream基本類似,只是前者是基于字符流后者是基于字節(jié)流。

在這里插入圖片描述

相關(guān)方法和構(gòu)造器

FileWriter提供了五個構(gòu)造器,用于實例化FileWriter對象,根據(jù)不同的場景進行選擇

在這里插入圖片描述

  • FileWriter(File file, boolean append);此構(gòu)造器為追加模式,當(dāng)append為true時追加到文件的末尾,否則覆蓋
  • public void write(int c); 寫入單個字符
  • public void write(char[] cbuf); 寫入指定數(shù)組
  • public void write(char[] cbuf, int off, int len); 寫入指定數(shù)組指定的部分
  • public void write(String str); 寫入整個字符串
  • public void write(String str, int off, int len); 寫入字符串的指定部分

注意:FileWriter使用后,必須關(guān)閉(close)或刷新(flush),否則寫入不到指定的文件(還在內(nèi)存里面)!

演示示例(使用的是追加構(gòu)造器)

將文本內(nèi)容輸出到E盤的test.txt文件 這里使用了Stirng類中的toCharArray方法:將字符串轉(zhuǎn)換成字符數(shù)組

在這里插入圖片描述

import org.junit.jupiter.api.Test;
import java.io.FileWriter;
import java.io.IOException;

@Test
public void WriteFile02() {
    String filePath = "E:\\test.txt";//操作的文件路徑
    //創(chuàng)建FileWrite對象
    FileWriter fileWriter = null;
    char[] chars = {'a', 'b', 'c'};
    try {
        fileWriter = new FileWriter(filePath, true);
        fileWriter.write('a');//寫入單個字符
        fileWriter.write(chars);//寫入指定數(shù)組
        fileWriter.write("hello,world".toCharArray(), 0, 5); //寫入字符數(shù)組的指定部分 寫入hello
        fileWriter.write("Java");//寫入整個字符串
        fileWriter.write("你好,世界",0,2);//寫入字符串的指定部分
    } catch (IOException e) {
        e.getMessage();//輸出異常l
    } finally {
        try {
            fileWriter.close();//釋放資源
        } catch (IOException e) {
            e.getMessage();
        }
    }
}

此時,上述代碼執(zhí)行之后,test.txt的內(nèi)容變成:aabchelloJava你好

在數(shù)據(jù)量大的情況下,可以使用循環(huán)操作!

為什么用完不close或flush,會寫入不到數(shù)據(jù)?

當(dāng)我們在close方法處進行斷點進行調(diào)試的時候,會發(fā)現(xiàn)FileWriter真正寫入數(shù)據(jù)的時候,是在close方法中!

在這里插入圖片描述

一直下一步,真正添加數(shù)據(jù)是在這里

在這里插入圖片描述

flush(刷新):方法同理,也會追加到這里

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

相關(guān)文章

  • 詳解JVM中的GC調(diào)優(yōu)

    詳解JVM中的GC調(diào)優(yōu)

    我們經(jīng)常會聽到甚至需要自己動手去做GC調(diào)優(yōu)。那么GC調(diào)優(yōu)的目的到底是什么呢?讓程序跑得更快?讓GC消耗更少的資源?還是讓程序更加穩(wěn)定?帶著這些疑問來讀一下這篇文章,將會得到一個系統(tǒng)的甚至是不一樣的結(jié)果。
    2021-06-06
  • JAVA超級簡單的爬蟲實例講解

    JAVA超級簡單的爬蟲實例講解

    下面小編就為大家?guī)硪黄狫AVA超級簡單的爬蟲實例講解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • HttpServletRequest參數(shù)丟失問題及解決

    HttpServletRequest參數(shù)丟失問題及解決

    在使用HttpServletRequest進行參數(shù)傳遞時,如果在異步方法中使用,可能會導(dǎo)致參數(shù)丟失,這是因為HttpServletRequest對象在異步任務(wù)中可能被回收,為了解決這個問題,可以在異步方法中提前提取參數(shù),然后將其傳遞給異步任務(wù)
    2025-10-10
  • java實現(xiàn)響應(yīng)重定向發(fā)送post請求操作示例

    java實現(xiàn)響應(yīng)重定向發(fā)送post請求操作示例

    這篇文章主要介紹了java實現(xiàn)響應(yīng)重定向發(fā)送post請求操作,結(jié)合實例形式分析了java請求響應(yīng)、重定向及數(shù)據(jù)處理相關(guān)操作技巧,需要的朋友可以參考下
    2020-04-04
  • Java字符串?dāng)?shù)組的創(chuàng)建代碼示例

    Java字符串?dāng)?shù)組的創(chuàng)建代碼示例

    這篇文章主要介紹了Java中字符串?dāng)?shù)組的聲明、初始化、默認值、遍歷和常見操作,文中通過代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2025-03-03
  • aop注解方式實現(xiàn)全局日志管理方法

    aop注解方式實現(xiàn)全局日志管理方法

    下面小編就為大家分享一篇aop注解方式實現(xiàn)全局日志管理方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • SpringBoot整合JWT Token的完整步驟

    SpringBoot整合JWT Token的完整步驟

    JSON Web Token是目前最流行的跨域認證解決方案,適合前后端分離項目通過Restful API進行數(shù)據(jù)交互時進行身份認證,這篇文章主要給大家介紹了關(guān)于SpringBoot整合JWT Token的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • 分享Java死鎖的4種排查工具

    分享Java死鎖的4種排查工具

    這篇文章主要介紹了分享Java死鎖的4種排查工具,死鎖指的是兩個或兩個以上的運算單元,都在等待對方停止執(zhí)行,以取得系統(tǒng)資源,但是沒有一方提前退出,就稱為死鎖,下文更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-05-05
  • SpringBoot整合MyBatis超詳細教程

    SpringBoot整合MyBatis超詳細教程

    這篇文章主要介紹了SpringBoot整合MyBatis超詳細教程,下面從配置模式、注解模式、混合模式三個方面進行說明MyBatis與SpringBoot的整合,需要的朋友可以參考下
    2021-05-05
  • 對SpringBoot項目配置文件進行加密實現(xiàn)過程

    對SpringBoot項目配置文件進行加密實現(xiàn)過程

    文章介紹了如何在Spring Boot項目中使用Maven依賴和單元測試生成加密數(shù)據(jù),并將加密數(shù)據(jù)配置在`bootstrap.yml`或`application.yml`中,同時,分享了如何在不同環(huán)境中配置加密鹽,包括IDE啟動項、配置文件和Dockerfile
    2025-10-10

最新評論

深州市| 天门市| 土默特右旗| 合山市| 调兵山市| 垦利县| 龙岩市| 嵊泗县| 伊宁县| 迁安市| 曲麻莱县| 溆浦县| 池州市| 桐城市| 横峰县| 邯郸市| 南召县| 四川省| 嵊泗县| 丽水市| 大庆市| 苍溪县| 大厂| 固镇县| 阳原县| 文成县| 靖安县| 扶余县| 尉犁县| 满洲里市| 张掖市| 康保县| 奇台县| 瑞安市| 卓尼县| 镇安县| 响水县| 鸡东县| 洞头县| 青铜峡市| 新晃|