バッファ付き入力ストリームを把握しようとするときに問題が発生しています。 Javaでテキストエディタプログラムを作成する必要があります。私は授業のいくつかの例をガイドラインとして持っていますが、まだそれを理解することはできませんでした。私の理解から、私はループを読み込みで準備した後、ファイル全体をエディタに読み込む必要があります。私は読み込んだ文字をchar型としてキャストし、それを.toStringを使って文字列に設定しました。今はコンパイルされますが、プログラムはフリーズしますので、無限ループが必要ですが、理由はわかりません。Javaのバッファ付き入力ストリームが読み込みされない
-2
A
答えて
2
ここにはいくつかの問題があります。
問題1:BufferedInputStream#read()
は、文字ではなくバイトを読み取ります。これは、ASCIIストリームのために "機能する"結果を生成しますが、UTF-8のような他のマルチバイトエンコーディングでは失敗します。
問題2:char
値は、Javaで符号なしなので、表現inChar != -1
は常にtrueになります。私はこれがあなたのアプリケーションを凍結させていると思います。
問題3:ファイルを使用した後にファイルを閉じていません。
String
としてファイルの内容を読み取る一般的な操作は、コード内の他の場所で役に立つ場合があるため、この機能を別の方法として実装することを検討する価値はあります。
現在の構造を維持する場合は、次のようなコードを使用しますが、にはまだ1という問題があります。
public static String readFileAsString(File inputFile) throws IOException {
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(inputFile))) {
StringBuilder sb = new StringBuilder();
for (int in = bis.read(); in != -1; in = bis.read()) {
sb.append((char)in);
}
return sb.toString();
}
}
ファイル全体をJavaでString
として読み取る簡単な方法があります。 Java8の可能性の1つは、次のようなものです。
public static String readFileAsString(File inputFile) throws IOException {
return new String(Files.readAllBytes(inputFile.toPath()));
}
デフォルトの文字セットを使用してバイトを文字に変換します。
+0
または 'new String(readbytes_result、StandardCharsets.ISO_8859_1) 'は、cast-int-containing-byte-to-charアプローチと同じ変換を確実に行います。 –
関連する問題
- 1. 入力ストリームから読み取ったバッファ付きリーダのテスト
- 2. javaプロパティで同じストリームの入力ストリームが再度読み込まれない
- 3. Pythonの読み込み出力音が入力されない
- 4. php://入力ストリームをバッファから読み込むことはできますか?
- 5. Javaスキャナ入力行の読み込み
- 6. Java - 既存のプロセスの出力ストリームを読み込みます。
- 7. バッファをストリーム2でラップする方法読み込み可能なストリーム?
- 8. close()メソッドのないJava割り込み入力ストリーム
- 9. wso2データマッパーメディエータの入力ストリームの読み込みエラー
- 10. java.net.SocketException:ソケットクローズイベント入出力ストリームが読み込み後に閉じているが、書き込み
- 11. androidの入力ストリーム全体を読み込みません
- 12. アンドロイドボックスのHDMI入力から生ストリームを読み込みます
- 13. ルビからUSB入力ストリームを読み込みます。
- 14. C/C++からメモリにバッファを書き込み、JNIなしでJavaでバッファを読み込みます。
- 15. テキストファイルから読み込み、ボタン付きリストボックスに入力する
- 16. Firebaseの読み込み$ scope viewの入力がロードされない
- 17. 入力ファイルの読み込み時に空白が表示されない
- 18. JNI:直接バッファの読み込みと書き込み
- 19. Apache PDFbox Javaエラーが発生する読み込み入力ファイル
- 20. ソケットのデータ入力ストリームからの読み込みを停止したい
- 21. ページの読み込みが開始されないドキュメントの読み込み
- 22. ペースページの読み込みにアニメーションの読み込みが表示されない
- 23. ストリームからストリームを読み込み[C#]
- 24. Java - キーボード入力を読み込んでテキストファイルに書き込む
- 25. SuperpoweredAndroidAudioIO入力からバッファを読み込む?
- 26. 読み込み中にJava SocketChannelの書き込みがブロックされる
- 27. http入力ストリームの読み方
- 28. 書き込み中にExcelに値が入力されない
- 29. Groovyコンソールの読み込み入力
- 30. ファイル入力の読み込みC
charでcharファイルを読み込み、すべてのループの内容を上書きします。 –
@MattClarkループ内でcharを読み取る行がコメントアウトされていることを考慮して、ファイルはすべて – BackSlash
で読み込まれていません。 'String string =" ";そのロジックを適用した後も、プログラムを実行するとまだフリーズしています((inChar =(char)bis.read())!= -1){string + = inChar;} System.out.println(string); ' –