問題タブ [streamreader]
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.
c# - StreamReader.Read と StreamReader.ReadBlock の違い
ドキュメントには、ReadBlock が
「読み取りのブロック バージョン」
しかし、それはどういう意味ですか?
前に別の人が質問したけど、え?
http://www.pcreview.co.uk/forums/thread-1385785.php
答えた男は言った
基本的に、これは StreamReader.ReadBlock が、要求した分だけ読み取られるか、ストリームの最後に到達するまで返らないことに依存できることを意味します。
Read は、あなたが要求したすべてのものを提供しない可能性があるため、これが必要であることを正しく理解していますか? そして、それが 0 を返すからといって、ファイルの終わりに達したという意味ではありませんか?
つまり、返されたバイト数以外をチェックするか (EndOfStream?)、代わりに ReadBlock を使用しますか?
.net - StreamReader でファイルを読み取るときのファイルのエンコード
現在、摂氏記号が °C ではなく C として読み取られるという問題が発生しています。
犯人のエンコーディングのように見えます。私はこれをやろうとしました:
それ以外の
しかし、私は今ガベージを取得しています....元のファイルエンコーディングはStreamReaderエンコーディングと一致する必要がありますか? コンパクト フレームワーク 2.0 を使用しています。
私はこれをオンラインで見つけましたが、これを使用する場合、すべてをバイト配列に読み込み、各行の終わりを検出し、それを Unicode に変換してから、プログラム ロジックを続行します。このクラスを利用した人はいますか?
compact-framework - Compact Framework で StreamReader を読み込んだ後にファイル エンコーディングを変換する
テキスト ファイルを 1 行ずつ読み込んでいますが、これまでのところ問題ありません。私はこれを使用します:
ファイルを読み取った後、ファイルを Unicode に変換する必要があるかもしれないことに気付きました。それはどのように行われますか?誰も Convert クラスを使用していますか?
c# - StreamReader.ReadLine() で行末記号を取得する必要があります
Excel .xls/.xlsx ファイルを読み取り、CSV および Unicode テキストに出力する C# プログラムを作成しました。空白のレコードを削除する別のプログラムを作成しました。これは、各行を で読み取りStreamReader.ReadLine()
、文字列を 1 文字ずつ処理し、すべてのコンマ (CSV の場合) またはすべてのタブ (Unicode テキストの場合) が含まれている場合、行を出力に書き込まないことで実現されます。
この問題は、Excel ファイルのセル内に改行 (\x0A) が含まれている場合に発生します。XLS から CSV へのコンバーターを変更して、これらの新しい行を検索し (セルごとに移動するため)、\x0A として書き込みます。通常の行は StreamWriter.WriteLine() を使用するだけです。
この問題は、空白のレコードを削除する別のプログラムで発生します。で読み込むとStreamReader.ReadLine()
、定義により、ターミネータではなく、行を含む文字列のみが返されます。埋め込まれた改行は 2 つの別々の行として表示されるため、最終的なファイルに書き込むときに、どちらが完全なレコードで、どちらが埋め込まれた改行であるかはわかりません。
入力のすべてが '\n' として登録されるため、\x0A を読み取れるかどうかさえわかりません。文字ごとに移動することもできますが、これにより、空白行を削除するロジックが破壊されます。
c# - イテレータ関数でC#3.0 ElementAtが壊れていませんか?
次のコードが期待どおりに機能しない理由を誰かに教えてもらえますか?StreamReaderの周りにIEnumberableラッパーを書き込もうとしていますが、ElementAtを使用すると、ElementAtに渡すインデックスに関係なく、ストリームから連続した文字が読み取られます。
ファイル「test.txt」には「abcdefghijklmnopqrstuvwxyz」が含まれています。出力は次のようになると思います。
aaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbb ..。
_
代わりに私は得る
abcdefghijklmnopqrstuvwxyz
これまでにElementAtに渡したインデックスは0だけですが、ArgumentOutOfRangeExceptionが呼び出されます。
MSDNによると:
ソースのタイプがIList<(Of <(T>)>)を実装している場合、その実装は、指定されたインデックスの要素を取得するために使用されます。それ以外の場合、このメソッドは指定された要素を取得します。
それは「次の要素を取得する」と読むべきですか?もしそうなら、それはちょっと怠惰なリストの目的を打ち負かします...
c# - using 句はこのストリームを閉じますか?
私はどうやら悪いコーディングの習慣を身につけてしまったようです。これが私が書いてきたコードの例です:
using
句が明示的に呼び出さClose()
れDispose()
、StreamReader
もFileStream
閉じられると考えました。
私が抱えていた問題を解決できる唯一の方法は、上記のブロックを次のように変更することでした。
StreamReader
最初のブロックで破棄して を閉じ、基になる も閉じる必要がありFileStream
ますか? それとも、私は間違っていましたか?
編集
実際に問題のあるコード ブロックを投稿して、この問題の根底に到達できるかどうかを確認することにしました。私は今ちょうど興味があります。
句に問題があると思ったusing
ので、すべてを展開しましたが、それでも毎回コピーできません。このメソッド呼び出しでファイルを作成するので、ファイルのハンドルを開いているものは他にないと思います。Path.Combine
また、呼び出しから返された文字列が正しいことも確認しました。
c# - テキストファイル内のストリームリーダーの位置(行番号)を知る方法は?
例(これは実際の生活ではないかもしれませんが、私の主張を明確にするためです):
GetLinePosition
これがstreamreaderの架空の拡張メソッドです。これは可能ですか?
もちろん、私は自分自身を数え続けることができましたが、それは問題ではありません。
c# - 消費せずにストリームリーダーから行を読み取る?
次の行に特定のタグ データが含まれているかどうかをテストするために、1 行先を読む方法はありますか?
開始タグはあるが終了タグがないフォーマットを扱っています。
行を読み、それを構造に追加してから、下の行をテストして、それが新しい「ノード」ではないことを確認し、そうでない場合は、その構造を閉じて新しいものを作成します
私が考えることができる唯一の解決策は、2つのストリームリーダーを同時にロックステップに沿ってそこに詰め込むことですが、それは無駄に思えます(それが機能する場合)
ピークのようなものが必要ですが、ピークライン
.net - .NET Framework StreamReader / WriterがデフォルトでUTF8エンコーディングになっているのはなぜですか?
StreamReader / Writerのコンストラクターを見ているだけで、デフォルトでUTF8を使用していることに注意してください。なぜこれなのか誰もが知っていますか?Unicodeをデフォルトにする方が安全だと思いました。