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

一起來學(xué)習(xí)Java IO的轉(zhuǎn)化流

 更新時間:2022年03月22日 10:55:30   作者:WYSCODER  
這篇文章主要為大家詳細(xì)介紹了Java IO的轉(zhuǎn)化流,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

Java IO 轉(zhuǎn)化流

亂碼引起轉(zhuǎn)換流

讀取亂碼

讀取電腦磁盤上的Java.txt文件內(nèi)容,文件路徑: e:\Java\Java.txt,文件編碼格式為 utf-8 。

在這里插入圖片描述

代碼示例:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
 public class TestDemo {
    public static void main(String[] args) {
        BufferedReader bufferedReader = null;
        String filePath = "e:\\Java\\Java.txt";
        try {
            bufferedReader = new BufferedReader(new FileReader(filePath));//創(chuàng)建字符處理流對象
             String s = bufferedReader.readLine();//讀取文件
             System.out.println(s);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {//關(guān)閉處理流
            try {
                if (bufferedReader != null) {
                    bufferedReader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

運(yùn)行結(jié)果:將文件內(nèi)容讀取了出來。

在這里插入圖片描述

因?yàn)槌绦蚰J(rèn)是以 utf-8 編碼讀取的,而此時Java.txt文件恰好是 utf-8 編碼,所以可以將內(nèi)容完整的讀取出來。如果改變Java.txt文件的編碼格式,讀取結(jié)果會怎樣呢?

修改Java.txt 文件的編碼格式為gbk,ANSI為國標(biāo)碼,根據(jù)電腦系統(tǒng)識別,當(dāng)前電腦系統(tǒng)為gbk編碼,所以將文件編碼修改為ANSI編碼即可。

在這里插入圖片描述

再次讀取文件結(jié)果出現(xiàn)亂碼

因?yàn)槌绦蚰J(rèn)以utf8編碼格式讀取文件,而此時文件編碼為gbk,所以讀取結(jié)果會產(chǎn)生亂碼。

在這里插入圖片描述

如何解決這個問題?我們可以使用 轉(zhuǎn)換流 來指定輸入流的編碼格式

轉(zhuǎn)換流介紹

轉(zhuǎn)換流有 InputStreamReader 和 OutputStreamWriter兩種。

1. InputStreamReader:Reader的子類,可以將InputStream(字節(jié)流)轉(zhuǎn)換為Reader(字符流)

2. OutputStreamWriter:Writer的子類,可以將OutputStream(字節(jié)流)轉(zhuǎn)換為Writer (字符流)

3. 當(dāng)處理純文本數(shù)據(jù)時,如果使用字符流效率更高,并且可以有效解決中文問題,建議將字節(jié)流轉(zhuǎn)換成字符流。

4. 可以在使用時指定編碼格式(比如utf8,gbk等)

InputStreamReader

InputStreamReader類繼承關(guān)系及構(gòu)造函數(shù)

在這里插入圖片描述

InputStreamReaderReader的一個子類,它其中的構(gòu)造函數(shù)InputStreamReader(InputStream,Charset)可以將一個字節(jié)輸入流轉(zhuǎn)換成字符輸入流,同時通過Charset屬性指定字符集編碼。

用轉(zhuǎn)換流InputStreamReader再次讀取上述示例中Java.txt文件,解決亂碼問題。

代碼示例:

import java.io.*;
 public class InputStreamReaderTest {
    public static void main(String[] args) throws IOException {
        String filePath = "e:\\Java\\Java.txt";
         FileInputStream fileInputStream = new FileInputStream(filePath);
        //將字節(jié)輸入流,轉(zhuǎn)換為字符流 并指定編碼格式為 utf8
        InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "gbk");
         //將字符流轉(zhuǎn)換為功能更加強(qiáng)大的字符處理流
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
         //讀取內(nèi)容
        String s = bufferedReader.readLine();
        System.out.println(s);
         //關(guān)閉流
        bufferedReader.close();
    }
}
 

運(yùn)行結(jié)果:

內(nèi)容讀取成功~~~

在這里插入圖片描述

OutputStreamWriter

OutputStreamWriter類繼承關(guān)系及構(gòu)造函數(shù)

在這里插入圖片描述

OutputStreamWriterWriter的一個子類,它其中的構(gòu)造函數(shù)OutputStreamWriter(OutputStream,Charset)可以將一個字節(jié)輸出流轉(zhuǎn)換成字符輸出流,同時通過Charset屬性指定字符集編碼。

代碼示例:

編程將字節(jié)流 FileOutputStream 轉(zhuǎn)換成字符流OutputStreamWriter,并在電腦磁盤上文件hello.txt文件中指定gbk編碼格式寫入“你好,Java!”,文件路徑: e:\Java\hello.txt 。

import java.io.*;
 public class OutputSteamWriterTest {
    public static void main(String[] args) throws IOException {
        String filePath = "e:\\Java\\hello.txt";
         //將字節(jié)輸出流轉(zhuǎn)換為字符輸出流
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(filePath), "gbk");
         String content = "你好,Java!";
         //將內(nèi)容寫進(jìn)文件
        outputStreamWriter.write(content);
         //關(guān)閉流
        outputStreamWriter.close();
         System.out.println("保存成功~~~");
    }
}

運(yùn)行結(jié)果:

將內(nèi)容寫進(jìn)了hello.txt文件。

在這里插入圖片描述

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • SpringBoot整合RabbitMQ實(shí)現(xiàn)消息確認(rèn)機(jī)制

    SpringBoot整合RabbitMQ實(shí)現(xiàn)消息確認(rèn)機(jī)制

    這篇文章主要介紹了SpringBoot整合RabbitMQ實(shí)現(xiàn)消息確認(rèn)機(jī)制,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • Java中如何檢查數(shù)組是否包含某整數(shù)

    Java中如何檢查數(shù)組是否包含某整數(shù)

    這篇文章主要介紹了在?Java?中檢查數(shù)組是否包含某整數(shù),在本文中,我們使用了幾個內(nèi)置的方法,如anyMatch()、contains()、binarySearch()等,我們將在給定的數(shù)組中找到一個值,結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • java實(shí)現(xiàn)簡單的推箱子小游戲

    java實(shí)現(xiàn)簡單的推箱子小游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡單的推箱子小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Java Mybatis框架增刪查改與核心配置詳解流程與用法

    Java Mybatis框架增刪查改與核心配置詳解流程與用法

    MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作。MyBatis 可以通過簡單的 XML 或注解來配置和映射原始類型、接口和 Java POJO為數(shù)據(jù)庫中的記錄
    2021-10-10
  • Java9中新增的Collector收集器

    Java9中新增的Collector收集器

    這篇文章主要介紹了Java9中新增的Collector收集器,Collector作為收集器,簡單來說就是將數(shù)據(jù)或元素收集到一起,并且flatMapping與收集器結(jié)合使用,通過提供智能元素集合進(jìn)行分組。下文相關(guān)介紹需要的小伙伴可以參考一下
    2022-06-06
  • Eclipse常用快捷鍵總結(jié)(必看篇)

    Eclipse常用快捷鍵總結(jié)(必看篇)

    下面小編就為大家?guī)硪黄狤clipse常用快捷鍵總結(jié)(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • Java的Dialog和FileDialog你知道啊

    Java的Dialog和FileDialog你知道啊

    這篇文章主要為大家詳細(xì)介紹了Java的Dialog和FileDialog,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • kafka分布式消息系統(tǒng)基本架構(gòu)及功能詳解

    kafka分布式消息系統(tǒng)基本架構(gòu)及功能詳解

    這篇文章主要為大家介紹了kafka分布式消息系統(tǒng)基本架構(gòu)及功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Spring學(xué)習(xí)教程之AOP模塊的概述

    Spring學(xué)習(xí)教程之AOP模塊的概述

    AOP 從功能的角度來講,可能看作OOP編程方式的一種補(bǔ)充,提供了一種不同的代碼或者系統(tǒng)組織方式,下面這篇文章主要給大家介紹了關(guān)于Spring學(xué)習(xí)教程之AOP模塊的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2018-05-05
  • Redis在springboot中的使用教程

    Redis在springboot中的使用教程

    這篇文章主要介紹了Redis在springboot中的使用教程,本文實(shí)例代碼相結(jié)合的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2018-06-06

最新評論