問題タブ [inputstreamreader]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - DataInputStream と InputStreamReader、2 つを概念的に理解しようとする
現時点で暫定的に理解しているように:
DataInputStream
はInputStream
サブクラスであるため、バイトを読み書きします。バイトを読み取っていて、それらがすべてint
s またはその他のプリミティブ データ型になることがわかっている場合は、byte
を使用してそれらの s をプリミティブに直接読み取ることができますDataInputStream
。
- 質問:コンテンツを読み取る前に、コンテンツの型 (int、string など) を知る必要がありますか? そして、ファイル全体がその 1 つのプリミティブ型で構成される必要があるでしょうか?
私が持っている質問は:のバイトデータInputStreamReader
をラップして使用しないのはなぜですか? InputStream
このアプローチでは、引き続きバイトを読み取ってから、文字を表す整数に変換します。どの整数がどの文字を表すかは、指定された文字セット ("UTF-8" など) によって異なります。
- 質問:が機能するのに が機能しないのはどのような場合ですか?
InputStreamReader
DataInputStream
私の推測の答え:速度が本当に重要であり、それができる場合は、InputStream
のバイトデータをプリミティブ経由で直接変換するのDataInputStream
がよいでしょうか?これにより、バイトデータを最初Reader
に「キャスト」する必要がなくなります。int
また、返された整数によってどの文字が表されているかを解釈するために、文字セットを提供することに依存しません。これがDataInputStream
、基礎となるデータのマシンに依存しない読み取りを可能にするという意味だと思います。
- 単純化:
DataInputStream
バイトをプリミティブに直接変換できます。
全体に拍車をかけた質問:私は次のチュートリアルコードを読んでいました:
new DataInputStream(fis)
...バイトからプリミティブに直接変換する機能が活用されていないように見えるため、インストラクターが使用を選択した理由がわかりませんか?
- 何か不足していますか?
あなたの洞察に感謝します。
java - InputStream の読み取り中にエンコードが無視されました
IIS サーバーに HTTP 要求を行う Java アプリケーションでエンコードの問題が発生しています。
URLConnection
オブジェクトのヘッダーを繰り返し処理すると、次の (関連する) ヘッダーが表示されます。
このURLConnection.getContentEncoding()
メソッドは、ドキュメントのエンコーディングとして utf-8 を返します。
これは私のHTTPリクエストとストリームの読み取りが行われている方法です:
ただし、サーバーから送信された次の文字列「ããção」は、クライアントによって「�����o」として受信されます。
私は何を間違っていますか?
java - JAVA: InputStreamReader を使用してファイルを開いて読み取る
InputStreamReader を使用してバイナリ ファイル (pdf、doc、zip) を読み込もうとしています。FileInputStream を使用してそれを達成し、ファイルの内容をバイト配列に保存しました。しかし、InputStreamReader を使用してそれを行うように求められました。たとえば、次を使用してpdfファイルを開いて読み取ろうとしているとき
次に、このコンテンツを別のpdfファイルに保存します
すべてうまくいきます (例外やエラーはありません) が、新しいファイルを開こうとすると、破損しているか、エンコーディングが間違っていると表示されます。
なにか提案を??
ps1特にInputStreamReaderを使用してこれが必要です
ps2 .txt ファイルを読み書きしようとすると正常に動作します
java - Java でこのコードを理解するのに助けが必要
まず第一に、私は入力と出力について何も知らなかったので、これを尋ねるつもりはありません。PrintWriter、FileInputStream、InputStreamReader、IOException に関するチュートリアルをたくさん見てきました。これらのクラスの概念を理解しています。しかし、私はこのコードを理解していません。実行してみました。まず、「two lines:」という出力がありました。最初の行に「こんにちは」と入力し、2 行目に「私はボブです」と入力しました。Enter キーを押すと、プログラムは私が書いたものを正確に出力します。コンソールに表示されるサンプルは次のとおりです。
この後もプログラムは実行され続けます。誰かが私にコードを説明してもらえますか? このコードには、 System.getProperty ("line.separator")のようないくつかの新しいものがあります。このメソッドの目的は何ですか? while ループと for ループは何をしますか? fout.flush()がコメントアウトされているのはなぜですか? それをコードに含めるとどうなりますか? 私はとても混乱しています。コードは次のとおりです。