タグ付けされた質問 「streamreader」

21
埋め込みリソーステキストファイルの読み方
を使用して埋め込みリソース(テキストファイル)を読み取り、StreamReaderそれを文字列として返すにはどうすればよいですか?現在のスクリプトでは、Windowsフォームとテキストボックスを使用しています。これにより、ユーザーは埋め込まれていないテキストファイル内のテキストを検索して置き換えることができます。 private void button1_Click(object sender, EventArgs e) { StringCollection strValuesToSearch = new StringCollection(); strValuesToSearch.Add("Apple"); string stringToReplace; stringToReplace = textBox1.Text; StreamReader FileReader = new StreamReader(@"C:\MyFile.txt"); string FileContents; FileContents = FileReader.ReadToEnd(); FileReader.Close(); foreach (string s in strValuesToSearch) { if (FileContents.Contains(s)) FileContents = FileContents.Replace(s, stringToReplace); } StreamWriter FileWriter = new StreamWriter(@"MyFile.txt"); FileWriter.Write(FileContents); FileWriter.Close(); …

7
ストリームリーダーを破棄するとストリームが閉じますか?
書き込みを行うメソッドにストリームを送信しています。これらのメソッドでは、バイナリリーダー/バイナリを使用しています。リーダ/ライタが破棄されたとき、usingまたは参照されていないときに、ストリームも閉じられますか? BinaryReader / Writerを送信しますが、StreamReaderも使用しています(おそらく回避する必要があります。GetLineとReadLineにのみ使用しています)。ライター/リーダーが閉じられるたびにストリームを閉じると、これは非常に面倒です。
166 c#  stream  streamreader 

7
ファイル内のテキストを検索してC#で置き換える方法
これまでの私のコード StreamReader reading = File.OpenText("test.txt"); string str; while ((str = reading.ReadLine())!=null) { if (str.Contains("some text")) { StreamWriter write = new StreamWriter("test.txt"); } } テキストを見つける方法は知っていますが、ファイル内のテキストを自分のテキストで置き換える方法はわかりません。

5
ストリームオブジェクトに対してClose()またはDispose()を呼び出す必要がありますか?
以下のようなクラスStream、StreamReader、StreamWriterなどの実装IDisposableインタフェース。つまりDispose()、これらのクラスのオブジェクトでメソッドを呼び出すことができます。彼らはpublicと呼ばれるメソッドも定義しましたClose()。オブジェクトの処理が完了したら、何を呼び出せばよいのでしょうか。両方とも呼ぶとどうなりますか? 私の現在のコードはこれです: using (Stream responseStream = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(responseStream)) { using (StreamWriter writer = new StreamWriter(filename)) { int chunkSize = 1024; while (!reader.EndOfStream) { char[] buffer = new char[chunkSize]; int count = reader.Read(buffer, 0, chunkSize); if (count != 0) { writer.Write(buffer, 0, count); } } …

2
ファイルをBase64Stringに変換して再度戻す
タイトルはそれをすべて言います: 私はtar.gzアーカイブを次のように読みました ファイルをバイトの配列に分割する それらのバイトをBase64文字列に変換します そのBase64文字列をバイトの配列に変換します それらのバイトを新しいtar.gzファイルに書き戻します 両方のファイルが同じサイズであることを確認できますが(以下のメソッドはtrueを返します)、コピーバージョンを抽出できなくなりました。 何か不足していますか? Boolean MyMethod(){ using (StreamReader sr = new StreamReader("C:\...\file.tar.gz")) { String AsString = sr.ReadToEnd(); byte[] AsBytes = new byte[AsString.Length]; Buffer.BlockCopy(AsString.ToCharArray(), 0, AsBytes, 0, AsBytes.Length); String AsBase64String = Convert.ToBase64String(AsBytes); byte[] tempBytes = Convert.FromBase64String(AsBase64String); File.WriteAllBytes(@"C:\...\file_copy.tar.gz", tempBytes); } FileInfo orig = new FileInfo("C:\...\file.tar.gz"); FileInfo copy = …

11
C#でのストリームを含む大きなテキストファイルの読み取り
私は、アプリケーションのスクリプトエディターに読み込まれる大きなファイルを処理する方法を考え出すというすばらしいタスクを持っています(これは、クイックマクロ用の内部製品のVBAのようなものです)。ほとんどのファイルは約300〜400 KBで、読み込みに優れています。しかし、それらが100 MBを超えると、プロセスは困難になります(予想どおり)。 何が起こるかというと、ファイルが読み込まれ、RichTextBoxに押し込まれてナビゲートされます。この部分についてはあまり気にしないでください。 最初のコードを書いた開発者は、単にStreamReaderを使用して [Reader].ReadToEnd() 完了するまでにかなり時間がかかる場合があります。 私の仕事は、このコードのコードを分割し、それをチャンクでバッファーに読み取り、それをキャンセルするオプションを備えた進行状況バーを表示することです。 いくつかの仮定: ほとんどのファイルは30〜40 MBになります ファイルの内容はテキスト(バイナリではない)であり、一部はUnix形式、一部はDOSです。 コンテンツが取得されると、使用されているターミネーターがわかります。 いったん読み込まれると、richtextboxでのレンダリングにかかる​​時間を気にする必要はありません。これは、テキストの初期ロードにすぎません。 さて、質問のために: StreamReaderを使用してから、Lengthプロパティ(ProgressMax)を確認し、設定されたバッファーサイズに対してReadを発行して、バックグラウンドワーカー内のwhileループWHILSTを反復処理して、メインUIスレッドをブロックしないようにすることはできますか?次に、stringbuilderが完了したらメインスレッドに戻します。 内容はStringBuilderに送られます。長さが利用できる場合、ストリームのサイズでStringBuilderを初期化できますか? これらは(あなたの専門家の意見では)良いアイデアですか?Streamsからのコンテンツの読み取りでは、最後の数バイトなどが常に失われるため、過去にいくつかの問題がありましたが、その場合は別の質問をします。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.