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

Java中的IO流之字符流Reader和Writer

 更新時(shí)間:2023年10月26日 08:47:12   作者:CodeJiao  
這篇文章主要介紹了Java中的IO流之字符流Reader和Writer,Reader : 和InputStream的唯一的區(qū)別就在于讀的數(shù)據(jù)單位不同,繼承自Reader的流都是用于向程序中輸入數(shù)據(jù),且數(shù)據(jù)的單位為字符16bit,需要的朋友可以參考下

1. Reader流

Reader : 和InputStream的唯一的區(qū)別就在于讀的數(shù)據(jù)單位不同

繼承自Reader的流都是用于向程序中輸入數(shù)據(jù),且數(shù)據(jù)的單位為字符(16bit)

在這里插入圖片描述

16位:一個(gè)字符也就是兩個(gè)字節(jié),使用Reader流讀取數(shù)據(jù)時(shí)都是兩個(gè)字節(jié)兩個(gè)字節(jié)往外讀的,為什么還要有這兩種兩個(gè)字節(jié)的讀取方式呢? 因?yàn)橛行┳址钦?個(gè)字節(jié)的,如我們的中文字符在Java里面就是占兩個(gè)字節(jié)的。如果采用一個(gè)字節(jié)一個(gè)字節(jié)往外讀的方式,那么讀出來的就是半個(gè)漢字,這樣子Java就沒有辦法正確的顯示中文字符的,所以有必要存在這種流,一個(gè)字符一個(gè)字符地往外讀。

Reader的基本方法:

//讀取一個(gè)字節(jié)并以整數(shù)的形式返回(0~255) 
//如果返回-1就說明已經(jīng)到了輸入流的末尾 
int read() throws IOException 

//讀取一系列字節(jié)并存儲到一個(gè)數(shù)組buffer
//返回實(shí)際讀取的字節(jié)數(shù),如果讀取前已到輸入流的末尾,則返回-1 
int read(byte[] buffer) throws IOException

//從offset位置開始,讀取length個(gè)字節(jié) 并存儲到一個(gè)字節(jié)數(shù)組buffer, 
//返回實(shí)際讀取的字節(jié)數(shù),如果讀取前以到輸入流的末尾返回-1.
int read(byte[] buffer,int offset,int length) throws IOException

//關(guān)閉流釋放內(nèi)存資源 
void close() throws IOException

//跳過n個(gè)字節(jié)不讀,返回實(shí)際跳過的字節(jié)數(shù) 
long skip(long n) throws IOException

2. Writer流

繼承自Writer的流都是用于程序中輸出數(shù)據(jù),且數(shù)據(jù)的單位為字符(16bit);

在這里插入圖片描述

Writer的基本方法:

//向輸出流中寫入一個(gè)字節(jié)數(shù)據(jù),該字節(jié)數(shù)據(jù)為參數(shù)b的低16位 
void write(int b) throws IOException

//將一個(gè)字節(jié)類型的數(shù)組中的數(shù)據(jù)寫入輸出流 
void write(byte[] b) throws IOException

//將一個(gè)字節(jié)類型的數(shù)組中的從指定位置(off)開始的len個(gè)字節(jié)寫入到輸出流 
void write(byte[] b,int off,int len) throws IOException

//關(guān)閉流釋放內(nèi)存資源 
void close() throws IOException

//將輸出流中緩沖的數(shù)據(jù)全部寫出到目的地 
void flush() throws IOException

【演示:使用FileWriter(字符流)向指定文件中寫入數(shù)據(jù)】:

在這里插入圖片描述

read.txt

Hello Java!
Hello C!
Hello Python!
Hello C#!

write.txt

在這里插入圖片描述

Test.java

package character1;

import java.io.FileReader;
import java.io.FileWriter;

/*使用FileWriter(字符流)向指定文件中寫入數(shù)據(jù)寫入數(shù)據(jù)時(shí)以1個(gè)字符為單位進(jìn)行寫入*/
public class Test {
    public static void main(String[] args) {
        /*使用FileWriter輸出流從程序把數(shù)據(jù)寫入到write.txt文件中
        使用FileWriter流向文件寫入數(shù)據(jù)時(shí)是一個(gè)字符一個(gè)字符寫入的*/
        try (FileWriter fileWriter = new FileWriter("E:\\IDEACode\\ketangpai\\file-test\\src\\character1\\resource\\write.txt");
             FileReader fileReader = new FileReader("E:\\IDEACode\\ketangpai\\file-test\\src\\character1\\resource\\read.txt");) {
            /*
             字符的本質(zhì)是一個(gè)無符號的16位整數(shù) 
             字符在計(jì)算機(jī)內(nèi)部占用2個(gè)字節(jié) 
             這里使用for循環(huán)把0~60000里面的所有整數(shù)都輸出 
             這里相當(dāng)于是把全世界各個(gè)國家的文字都以0~60000內(nèi)的整數(shù)的形式來表示
             */
            for (int i = 0; i < 60000; i++) {
                /*
                使用write(int c)把0~60000內(nèi)的整數(shù)寫入到指定文件內(nèi)
                調(diào)用write()方法時(shí),我認(rèn)為在執(zhí)行的過程中應(yīng)該使用了“(char)c”進(jìn)行強(qiáng)制 轉(zhuǎn)換,
                即把整數(shù)轉(zhuǎn)換成字符來顯示
                因?yàn)榇蜷_寫入數(shù)據(jù)的文件可以看到,里面顯示的數(shù)據(jù)并不是0~60000內(nèi)的整數(shù),
                而是不同國家的文字的表示方式
                 */
                fileWriter.write(i);
            }
            /*使用FileReader(字符流)讀取指定文件里面的內(nèi)容 讀取內(nèi)容時(shí)是以一個(gè)字符為單位進(jìn)行讀取的*/
            int b = 0;
            long num = 0;
            while ((b = fileReader.read()) != -1) {
                System.out.print((char) b);
                num++;
            }
            System.out.println();
            System.out.println("總共讀取了" + num + "個(gè)字符");
        } catch (Exception e) {
//            打印異常信息
            e.printStackTrace();
//            異常退出
            System.exit(-1);
        }
    }
}

在這里插入圖片描述

在這里插入圖片描述

3. 小結(jié)

FileReader和FileWriter這兩個(gè)流都是字符流,都是以一個(gè)字符為單位進(jìn)行輸入和輸出的。所以讀取和寫入占用2個(gè)字節(jié)的字符時(shí)都可以正常地顯示出來,以上是以File(文件)這個(gè)類型為例對節(jié)點(diǎn)流進(jìn)行了講解,所謂的節(jié)點(diǎn)流指定就是直接把輸入流或輸出插入到數(shù)據(jù)源上,直接往數(shù)據(jù)源里面寫入數(shù)據(jù)或讀取數(shù)據(jù)。

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

相關(guān)文章

  • 模擬Mybatis的實(shí)現(xiàn)方法

    模擬Mybatis的實(shí)現(xiàn)方法

    本文通過實(shí)例代碼給大家分享了模擬Mybatis的實(shí)現(xiàn)方法,需要的朋友參考下吧
    2017-09-09
  • Java 多態(tài)從原理到實(shí)踐的深度解析

    Java 多態(tài)從原理到實(shí)踐的深度解析

    本文將從多態(tài)的定義出發(fā),逐層拆解其實(shí)現(xiàn)原理、分類、實(shí)戰(zhàn)案例,幫你徹底掌握J(rèn)ava多態(tài)的核心知識,本文通過案例給大家講解的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • SpringMVC實(shí)現(xiàn)參數(shù)校驗(yàn)配置方法

    SpringMVC實(shí)現(xiàn)參數(shù)校驗(yàn)配置方法

    這篇文章主要介紹了SpringMVC實(shí)現(xiàn)參數(shù)校驗(yàn)的配置方式,Spring MVC會拋出MethodArgumentNotValidException異常,并將錯(cuò)誤信息綁定到相應(yīng)的字段上,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • 詳解Spring Retry實(shí)現(xiàn)原理

    詳解Spring Retry實(shí)現(xiàn)原理

    這篇文章主要介紹了詳解Spring Retry實(shí)現(xiàn)原理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • Java利用自定義注解實(shí)現(xiàn)數(shù)據(jù)校驗(yàn)

    Java利用自定義注解實(shí)現(xiàn)數(shù)據(jù)校驗(yàn)

    JSR303是一套JavaBean參數(shù)校驗(yàn)的標(biāo)準(zhǔn),它提供了一系列的校驗(yàn)方式,這些校驗(yàn)方式在javax.validation.constraints包中。本文就來聊聊如何利用它實(shí)現(xiàn)數(shù)據(jù)校驗(yàn)
    2022-09-09
  • mybatis-plus實(shí)現(xiàn)四種lambda表達(dá)式方式

    mybatis-plus實(shí)現(xiàn)四種lambda表達(dá)式方式

    使用了lambda表達(dá)式 可以通過方法引用的方式來使用實(shí)體字段名的操作,本文主要介紹了mybatis-plus實(shí)現(xiàn)四種lambda表達(dá)式方式,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • SpringBoot生成License的實(shí)現(xiàn)示例

    SpringBoot生成License的實(shí)現(xiàn)示例

    License指的是版權(quán)許可證,那么對于SpringBoot項(xiàng)目,如何增加License呢?本文就來介紹一下,感興趣的可以了解一下
    2021-06-06
  • 使用SpringMVC接收文件流上傳和表單參數(shù)

    使用SpringMVC接收文件流上傳和表單參數(shù)

    這篇文章主要介紹了使用SpringMVC接收文件流上傳和表單參數(shù),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Spring Boot對接七牛云存儲的詳細(xì)步驟和流程

    Spring Boot對接七牛云存儲的詳細(xì)步驟和流程

    這篇文章主要介紹了SpringBoot對接七牛云存儲的完整流程,涵蓋注冊賬號、配置項(xiàng)目、文件上傳/刪除/下載及列表查詢、前端集成等步驟,并強(qiáng)調(diào)了安全性、異常處理及擴(kuò)展功能如圖片處理等,需要的朋友可以參考下
    2025-08-08
  • Java實(shí)現(xiàn)簡單的聊天室功能

    Java實(shí)現(xiàn)簡單的聊天室功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡單的聊天室功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06

最新評論

商水县| 北流市| 九龙坡区| 安阳县| 连城县| 南溪县| 库尔勒市| 浮梁县| 从江县| 丽江市| 武威市| 怀仁县| 永和县| 沁水县| 文安县| 英超| 西丰县| 乾安县| 乌兰察布市| 牟定县| 南澳县| 珠海市| 彭泽县| 海盐县| 闸北区| 辛集市| 盐源县| 金门县| 顺义区| 汕尾市| 虎林市| 于田县| 永福县| 忻州市| 渝北区| 博爱县| 繁昌县| 英吉沙县| 天峨县| 故城县| 昭平县|