問題タブ [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# - c#は、数秒後にストリームリーダーを停止します。これは可能ですか?
Webリクエストがあり、streamreaderで情報を読み取ります。15秒後にこのストリームリーダーの後で停止したいと思います。読むプロセスに時間がかかることもありますが、うまくいくこともあります。読み取りプロセスに15秒以上かかる場合、どうすれば停止できますか?私はすべてのアイデアを開いています。
asp.net - asp.netのWebアプリケーションを使用して、PCからファイルを参照します
IIS を使用してアップロードした Web アプリケーションがあります。アプリケーションを使用しているユーザーが、自分の (ユーザーの) コンピューターにあるファイルを選択して、その内容を読み取れるようにしたいと考えています。
コードは次のとおりです。
PCから実行すると動作します。しかし、IIS から実行しようとすると、次のエラーが表示されます。
アプリケーションがユーザーの PC からファイルを読み取れないことを理解しています。どうすればそれを機能させることができますか?
ありがとう!
グレッグ
c# - StreamReader ReadBlock がバイナリ ファイルでハングする
ファイルのアップロードを含むブラウザからの POST を受け入れる小さなクラスがあります。私は StreamReader を使用してそれを読み取ります。ヘッダーを読み取り、本文に到達したら、コンテンツの長さを取得し、そのサイズの配列を作成してから、次のようstream.ReadBlock()
にします。
これを実行してテキスト ファイルを POST すると、正常に動作します。ただし、ZIP ファイルと MP3 ファイルの両方を試しましたが、どちらも機能しません。stream.ReadBlock()
通話中にハングアップするだけです。
Mono 2.6.7を搭載したUbuntu 10.04でこれを最初に試しました(私のMonoDevelopプロジェクトは.net 3.5を使用するように設定されています)。そして、VisualStudio 2010 と .net 3.5 で同じプロジェクトを実行して、Windows7 でも同じことが起こることを確認しました。Firefox と Chrome の両方から投稿してみました。
なぜこれが起こるのか、誰にも手がかりがありますか?ありがとう。
また、StreamReader の代わりに BinaryReader を使用してみました。
しかし、今何があってもその通話にハングアップしてしまいます。StreamReader を使用して POST のヘッダーを読み取り、次に BinaryReader を使用して本文を読み取るためですか?
c# - 基になるストリームを破棄する場合、XmlReaderを破棄する必要がありますか?
GetData
ファイルからを作成する次のメソッドがStreamReader
あります。
mainParser.LoadDocument(bs)
次のように呼び出します。
StreamReader
によって処分されGetData
ます。XmlReader
これは、(私が信じている)これが唯一の管理されていないリソースを処分するので、私が処分する必要がないことを意味しますか?
c# - ファイルから読み取ってSQLiteに挿入するより速い方法はありますか
みなさん午後。私はSQLiteにあまり詳しくないので、データベースのすべての設定をいじっていません。私はSQLServer、Oracle、さらにはAccessやmySQLにも精通しています。さて、現在、私は110,000以上のレコードを含むファイルを取得し、ファイルを1行ずつ読み取り、データを解析し、テーブルへの挿入ステートメントを実行しています。テーブルは、行の最初のフィールドであるレコードタイプによって異なります。さて、私は今それをロードしています、そしてそれは(私がこれを書いているように)12分間実行されており、14,000レコードしかインポートしていません。計算すると、1時間15分から1時間30分かかるということです。その時点でシステムの残りの部分がどのように動作するかによって異なります。レコードの種類が異なるため、できませんでした。SQLiteのオプションがあった場合は、一括挿入を実行します(あるかどうかはわかりません)。これはバックグラウンドワーカーとして実行されています。以下は、データをプルして解析する関数と、データをDBに挿入する関数です。これはMVC形式のC#アプリケーションであることに注意してください(私がそれを制御し、再構築する時間がないときのようなものでした):
MainForm.csバックグラウンドワーカー関数
Importer.csインポート機能
DataFactory.csImportIPB関数
Database.csExecuteNonQueryメソッド
誰かが提供されたものから改善できるものを見ることができますか?より速く動作するように設定できるバックグラウンドワーカーの設定はありますか?バックグラウンドワーカーのデフォルト設定はありますか?挿入を高速化するために(SQLite Expert Personalを使用して)変更できるdbファイルにはどのような設定がありますか?それは私のファイルのサイズだけですか?今、これを終えると、22分を過ぎて24,000レコードを記録しました。これは時間に敏感な問題ではないので、必要な時間をすべて取ってください。ありがとう。
更新:また、テーブルの1つに整数の主キー(IDフィールドとして機能)があることにも言及する必要があると思います。パフォーマンスの問題はありますか?
c# - *.CSV- の検索行
信じられない、最も簡単なタスクがうまくいかない!
StreamReader-Class を使用して csv ファイルをループし、連想行でキーを見つけたいだけです。例えば:
- キー1;値1
- キー 2;値 2
- キー3;値3
キーが存在する場合は問題ありません。それ以外の場合は EOF に到達する必要がありますが、機能しません!
バッファリングされたデータを破棄すると、毎回 EOF に達します。その結果、キーは見つかりません。
編集:すべての提案がありますが、同じ結果です!
c# - StreamReader からバッチで読み取る
StreamReader を介して 800MB のテキスト ファイルを DataTable にロードしようとしているときに、OutOfMemory 例外が発生しました。バッチでメモリ ストリームから DataTable をロードする方法があるかどうか疑問に思っていました。すぐ。
ここでは私のグーグルはあまり役に立ちませんでしたが、これを行う簡単な方法があるはずです。最終的には、SqlBulkCopy を使用して DataTables を MS SQL db に書き込むことになるので、説明した方法よりも簡単な方法がある場合は、正しい方向への迅速なポインターに感謝します。
編集 - これが私が実行しているコードです:
そして、返されるエラーは次のとおりです。
「System.OutOfMemoryException: 'System.OutOfMemoryException' 型の例外がスローされまし
た。System.String.Split(Char[] セパレーター、Int32 カウント、StringSplitOptions オプション)
で System.String.Split(Char[] セパレーター}
で Harvester.Config .PopulateDataTableFromText(DataTable dt, String txtSource) in C:...."
データを SQL に直接ロードするという提案について - 私は C# に関しては少し初心者ですが、基本的にはそれが私がやっていることだと思いましたか? SqlBulkCopy.WriteToServer は、テキスト ファイルから作成した DataTable を取得し、SQL にインポートします。私が見逃しているこれを行うためのさらに簡単な方法はありますか?
編集: 言い忘れましたが、このコードは SQL Server と同じサーバーでは実行されません。データ テキスト ファイルはサーバー B にあり、サーバー A のテーブルに書き込む必要があります。これにより、bcp を使用できなくなりますか?
c# - C#でファイルを同時に読み書きする
変更を監視し、独自の変更を追加したいデータを含むファイルがあります。「Tail -f foo.txt」のように考えてください。
このスレッドに基づいて、ファイルストリームを作成し、それをライターとリーダーの両方に渡す必要があるようです。ただし、リーダーが元のファイルの最後に到達すると、自分で書いた更新が表示されません。
奇妙な状況のように思えることはわかっています...それができるかどうかを確認するための実験です.
私が試した例は次のとおりです。
foo.txt:
a
b
c
d
e
f
"f" を過ぎると、リーダーは null を返します。
c# - フォームの終了時に Stream Read と Stream Writer を閉じる
やあみんな、ここでちょっとした問題を抱えています。
そのため、ファイルをロードするロード ボタンと、ファイルを保存する保存ボタンがあります。プログラムを閉じる終了ボタンもあります。私が助けを必要としているのは、プログラムを閉じるときに、閉じられていない StreamReader または StreamWriter があるかどうかを確認することです。
私がこれまでに持っているものは次のとおりです。上部で、私はこれらの人を宣言します
私のロードボタンはこのように見えます
そして、私の保存ボタンは次のようになります
私の終了ボタンは次のようになります
私がやろうとしたのは、bool isDirtyBoolean を一番上に設定し、Stream Reader または Writer が閉じたときに bool 値を true に設定することでした。そのため、アプリを終了すると、まだ false に設定されている場合は、とにかくそれらを閉じます。
しかし、 isDirtyBoolean の値はこれらのプライベートな無効ボタンであり、それらにアクセスできないため、これは機能しません。
c# - StreamReaderを破棄すると、ストリームが読み取れなくなるのはなぜですか?
ストリームを最初から最後まで2回読み取る必要があります。
ただし、次のコードは例外をスローしObjectDisposedException: Cannot access a closed file
ます。
なぜそれが起こっているのですか?本当に何が処分されますか?そして、なぜ操作StreamReader
がこのように関連するストリームに影響を与えるのでしょうか?シーク可能なストリームは、数秒を含めて数回読み取ることができると期待するのは論理的ではありませんStreamReader
か?