検索
ホームページJava&#&チュートリアル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 までご連絡ください。
高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 中国語版

SublimeText3 中国語版

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

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター