目次
1. InputStreamReader クラス
2. InputStreamReader 構築メソッド
3.InputStreamReaderAPI
4. InputStreamReader クラスと FileReader クラスの関係
ホームページ Java &#&チュートリアル JAVAでInputStreamReaderストリームを構築する方法

JAVAでInputStreamReaderストリームを構築する方法

May 17, 2023 pm 10:43 PM
java inputstreamreader

1. InputStreamReader クラス

API ドキュメントの説明: InputStreamReader クラスは、バイト ストリームから文字ストリームへのブリッジです。指定された文字セットを使用してバイトを読み取り、文字にデコードします。使用する文字セットは、名前を指定するか、明示的に指定するか、プラットフォームのデフォルトの文字セットを受け入れることによって設定できます。 InputStreamReader の read() メソッドを呼び出すたびに、基礎となるバイト入力ストリームから 1 つ以上のバイトが読み取られる場合があります。バイトから文字への効率的な変換を実現するには、現在の読み取り操作を満たすために必要なバイト数よりも多くのバイトを基礎となるストリームから抽出できます。より効率的に動作させるには、InputStreamReader をベースとして使用し、それを BufferedReader にパッケージ化することを検討してください。

Reader クラスを継承します

public class InputStreamReader extends Reader {}
ログイン後にコピー

1) バイト ストリームからブリッジを理解する方法文字ストリームに?

1. コンピュータの記憶領域の単位はバイトです。たとえば、テキストの本文中には漢字などの文字がありますが、コンピュータにとってはバイトという形で存在します

2. バイト ストリームの読み取りはシングルバイト読み取りですが、文字セットが異なると文字にデコードするのに異なる数値が必要になるため、バイト ストリームの読み取りではエラーが報告されます

バイトをキャッシュするためにバイト ストリームから読み取り、デコードされます。文字セットを介した文字が返されます。これはストリームを使用して実装する必要があります。これは文字ストリーム

4 の形式です。InputStreamReader ストリームがこの役割を果たし、バイト ストリームから文字への変換を実現します。

2) 指定された文字セットを使用してバイトを読み取り、文字にデコードすることをどのように理解していますか?

バイトは本質的に 8 バイナリ ビットであり、異なる文字セットは同じバイトをデコードして異なる文字結果を生成します。したがって、文字を読み取るときに適切な文字セットを指定する必要があります。そうしないと、読み取られた内容が文字化けします。文字

3) 使用する文字セットは名前で指定することも、明示的に指定することも、プラットフォームのデフォルトの文字セットを受け入れることもできます。

は、InputStreamReader クラスに文字セットを設定するための複数のメソッドまたは複数のコンストラクターがあることを意味します

4) InputStreamReader の read() メソッドが呼び出されるたびに、基礎となるバイト入力ストリームから 1 つ以上のバイトを読み取る方法を理解するにはどうすればよいですか?

read() メソッドは、基礎となるバイト ストリームから文字バッファに 2 文字を読み取ろうとします。これは試行であることに注意してください。ファイルの最後の文字に遭遇した場合、読み取りのみが可能です。 1 文字が取得されるため、各 read() メソッドで読み取られるバイト数は可変です。

5) バイトから文字への効率的な変換を実現するために、比率は基本ストリームから抽出できます。現在の読み取り操作に必要なバイト数を増やすには、InputStreamReader を BufferedReader でラップすることを検討してください

これはまだ理解できません。BufferedReader クラスを理解し、読み取り効率を比較して、回答

2. InputStreamReader 構築メソッド

1) デフォルトの文字セットを使用して、InputStreamReader ストリームを構築します: 本質は、インスタンス ドメインで変数を初期化することであり、文字セットに関する設定は必要ありません。表示されます

 public InputStreamReader(InputStream in) {
        super(in);
        try {
            sd = StreamDecoder.forInputStreamReader(in, this, (String)null);
        } catch (UnsupportedEncodingException e) {
           
            throw new Error(e);
        }
    }
ログイン後にコピー

2) 指定された文字セット名を使用して、InputStreamReader ストリームを構築します。本質は、インスタンス ドメインで変数を初期化することです。文字セットが初期化メソッドの 3 番目のパラメータであることがわかります。

 public InputStreamReader(InputStream in, String charsetName)
        throws UnsupportedEncodingException
    {
        super(in);
        if (charsetName == null)
            throw new NullPointerException("charsetName");
        sd = StreamDecoder.forInputStreamReader(in, this, charsetName);
    }
ログイン後にコピー

3) sd 変数: これは本質的に StreamDecoder クラスのオブジェクトです。InputStreamReader の構築メソッドは、このオブジェクトを初期化することです。

private final StreamDecoder sd;
ログイン後にコピー

3.InputStreamReaderAPI

1 InputStreamReaderAPI クラスのすべての API が sd 変数を使用していることがわかり、InputStreamReader クラスのメソッドの本質は StreamDecoder クラスのメソッド

#2 を呼び出すことであることがわかります。 InputStreamReader クラスのメソッドがどのように重要な役割を果たすかを理解するには、StreamDecoder クラスを理解してください。

    /**
     * 获取设置的字符集
     */
    public String getEncoding() {
        return sd.getEncoding();
    }
 
    /**
     * 读取流并返回一个字符,遇到文件末尾返回-1
     */
    public int read() throws IOException {
        return sd.read();
    }
 
    /**
     * 读取字符到字符数组的部分中,遇到文件末尾返回-1
     */
    public int read(char cbuf[], int offset, int length) throws IOException {
        return sd.read(cbuf, offset, length);
    }
 
    /**
     * 检测流是否准备好呗读取
     */
    public boolean ready() throws IOException {
        return sd.ready();
    }
 
    /**
    * 关闭流并释放资源
    */
    public void close() throws IOException {
        sd.close();
    }
ログイン後にコピー

4. InputStreamReader クラスと FileReader クラスの関係

1. FileReader クラスは次のとおりです。 InputStreamReader の単純な派生であり、関数を拡張しません

2. FileReader クラスによって読み取られるデータの本質は、InputStreamReader クラスのデータです。読み取り中、InputStreamReader によって読み取られるデータは、実際には StreamDecoder によって読み取られます。 class

3. したがって、文字入力ストリームを使用する場合、実際には StreamDecoder クラスが機能します

以上がJAVAでInputStreamReaderストリームを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Java における完全数のガイド。ここでは、定義、Java で完全数を確認する方法、コード実装の例について説明します。

Java の乱数ジェネレーター Java の乱数ジェネレーター Aug 30, 2024 pm 04:27 PM

Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Java のスミス番号のガイド。ここでは定義、Java でスミス番号を確認する方法について説明します。コード実装の例。

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプ Java での日付までのタイムスタンプ Aug 30, 2024 pm 04:28 PM

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

未来を創る: まったくの初心者のための Java プログラミング 未来を創る: まったくの初心者のための Java プログラミング Oct 13, 2024 pm 01:32 PM

Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。

See all articles