問題タブ [file-io]

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.

0 投票する
9 に答える
2497 参照

c++ - XP 上のファイル: 「最終アクセス時刻」をオフにしても安全ですか?

自宅の PC でビルド時間を短縮する安価な方法を必死に探しています。Windows XP でファイルの Last Access Time 属性を無効にして、単純な読み取りでディスクに何も書き戻さないようにする方法についての記事を読みました。

それも本当に簡単です。DOS プロンプトで次のように書き込みます。

fsutil behavior set disablelastaccess 1

C++ プロジェクトの構築のコンテキストで試したことがある人はいますか? 欠点はありますか?

[編集] トピックの詳細はこちら.

0 投票する
3 に答える
1662 参照

design-patterns - さまざまなファイル形式への保存と書き込みのパターン

異なるファイル形式を保存およびロードするときに使用するのに適したパターンはありますか?

たとえば、ドキュメントのクラス階層が複雑ですが、いくつかの異なるファイル形式をサポートしたいと考えています。

Strategy パターンについて考えましたが、オブジェクトを保存およびロードするためにオブジェクトのすべての部分にアクセスする必要があるため、納得できません。

0 投票する
6 に答える
36987 参照

c# - ファイル io の実行時に例外を適切に処理する方法

何らかの方法でファイルを操作していることに気付くことがよくありますが、コードを書いた後は、実際にどれだけ壊れているのか常に確信が持てません。問題は、ファイル関連の操作がどのように失敗する可能性があるか、つまり期待を処理する最善の方法が完全にはわからないことです。

簡単な解決策は、コードによってスローされた IOExceptions をキャッチし、ユーザーに「アクセスできないファイル」エラー メッセージを表示することですが、もう少し細かいエラー メッセージを表示することは可能です。別のプログラムによってファイルがロックされているなどのエラーと、ハードウェア エラーが原因でデータが読み取れないエラーの違いを判断する方法はありますか?

次の C# コードが与えられた場合、ユーザー フレンドリーな (できるだけ有益な) 方法でエラーを処理するにはどうすればよいでしょうか?

0 投票する
4 に答える
2467 参照

.net - .Netの非同期ファイルIO

コンパイラ、オプティマイザ、およびインデックス作成テクノロジについて詳しく知るために、C#でおもちゃのデータベースを構築しています。

ページをバッファプールに取り込むための(少なくとも読み取り)要求間で最大の並列処理を維持したいのですが、.NETでこれを実現するための最善の方法について混乱しています。

ここにいくつかのオプションと私がそれぞれに遭遇した問題があります:

  1. 使用法System.IO.FileStreamBeginRead方法

    ただし、ファイル内の位置はの引数ではなく、(メソッドを介して設定された)BeginReadのプロパティであるため、一度に1つのリクエストしか発行できず、その間ストリームをロックする必要があります。(または、私は?との間にのみロックを保持し、電話をかける前にロックを解除した場合、ドキュメントは不明確です。誰か知っていますか?)これを行う方法を知っていますが、それが最良の方法。FileStreamSeekSeekBeginReadEndRead

  2. 構造とkernel32.dllSystem.Threading.Overlappedの関数へのP\Invokeを 中心とした別の方法があるようです。ReadFileEx

    残念ながら、特に管理された言語では、サンプルが不足しています。このルート(動作させることができる場合)にはThreadPool.BindHandle、スレッドプール内のメソッドとIO完了スレッドも含まれているようです。これがウィンドウの下でこのシナリオを処理するための認可された方法であるという印象を受けますが、私はそれを理解しておらず、初心者に役立つドキュメントへのエントリポイントを見つけることができません。

  3. 他に何かありますか?

  4. コメントの中で、jacobはFileStream、飛行中の読み取りごとに新しいものを作成することを提案しています。

  5. ファイル全体をメモリに読み込みます。

    これは、データベースが小さい場合に機能します。コードベースは小さく、他にも多くの非効率性がありますが、データベース自体はそうではありません。また、大規模なデータベース(ページング、外部ソーティングなど、複雑さの大部分を占めることが判明)を処理するために必要なすべての簿記を確実に実行していることを確認したいと思います。誤ってごまかしやすい。

編集

解決策1に疑問がある理由の明確化:BeginReadからEndReadまでずっと単一のロックを保持するということは、別の読み取りが進行中であるという理由だけで読み取りを開始したい人をブロックする必要があることを意味します。新しい読み取りを開始するスレッドは、結果が利用可能になる前に(一般に)さらにいくつかの作業を実行できる可能性があるため、これは間違っていると感じます。(実際、これを書くだけで、新しい解決策を考えるようになりました。私は新しい答えとして置きました。)

0 投票する
2 に答える
15700 参照

c# - CopyFileまたはCopyFileExを使用せずにWindowsで大きなファイルをコピーするにはどうすればよいですか?

Windows Server 2003には、RAMの容量に比例して非常に大きなファイルをコピーできないという制限があります。制限は、xcopy、Explorer、Robocopy、および.NETFileInfoクラスで使用されるCopyFile関数とCopyFileEx関数にあります。

発生するエラーは次のとおりです。

[ファイル名]をコピーできません:要求されたサービスを完了するためのシステムリソースが不足しています。

これはこのテーマに関するナレッジベースの記事ですが、NT4および2000に関連しています。

ExchangeインストールからESEUTILを使用することも提案されていますが、それを機能させることができませんでした。

誰かがこれを処理するための迅速で簡単な方法を知っていますか?私は2GbのRAMを搭載したマシンで>50Gbについて話している。Visual Studioを起動して、それを実行するための何かを作成する予定ですが、すでに存在し、安定していて、十分にテストされているものがあると便利です。

[編集]受け入れられた回答に付随する実用的なC#コードを提供しました。

0 投票する
6 に答える
14066 参照

java - FileChannel と ByteArrays を使用した ASCII ファイルの読み取り

次のコードがあります。

しかし、文字は ? で表示されます。これは、Unicode 文字を使用する Java と関係がありますか? これを修正するにはどうすればよいですか?

0 投票する
6 に答える
16961 参照

ruby - Rubyに相当するJava.propertiesファイル?

いくつかの単純なプロパティをファイルに保存し、Rubyからそれらにアクセスする必要があります。

私はJavaでそのようなものの標準である.propertiesファイル形式(java.util.Propertiesクラスを使用)が絶対に大好きです...それはシンプルで使いやすく、読みやすいです。

それで、多くの労力をかけずにそのようなファイルからいくつかのキーと値のペアをロードできるRubyクラスはどこかにありますか?

XMLを使いたくないので、REXMLを提案しないでください(私の目的は「山かっこ税」を保証するものではありません)。

私は自分のソリューションをローリングすることを検討しました...おそらく5〜10行のコードトップになりますが、それでも既存のライブラリを使用したいと思います(本質的にファイルから構築されたハッシュである場合)... 1行に下げてください。


更新:これは実際にはレールではなくストレートのRubyアプリですが、YAMLはうまく機能すると思います(私の心の奥底にありましたが、忘れていました...見たことはありますが、まだ使用していません)、みんなに感謝します!!

0 投票する
3 に答える
6166 参照

c# - C#でファイルスペースを事前に割り当てますか?

ダウンロードアプリケーションを作成しています。ファイルがかなり大きくなる可能性があるため、実際にダウンロードする前にハードドライブにファイル用のスペースを事前に割り当てたいと思います。「このドライブがいっぱいです。いくつかのファイルを削除して、もう一度やり直してください。 「」それで、その観点から、私はこれを書きました。

少なくとも数百MB、または場合によってはGBのファイルをダウンロードし、ページファイルを完全に消去してシステムメモリを完全に強制終了しない場合でも、Windowsをスラッシング狂乱に陥れるまでは機能します。おっと。

それで、もう少し悟りを持って、私は次のアルゴリズムで着手しました。

これはうまく機能し、最後のソリューションのメモリ障害の問題に悩まされることはありません。ただし、特に古いハードウェアでは、(GBに相当する可能性のある)データをディスクに書き出すため、まだ低速です。

問題はこれです:同じことを達成するためのより良い方法はありますか?1トンのデータを実際に書き出すのではなく、xサイズのファイルを作成し、ファイルシステムにスペースを割り当てるようにWindowsに指示する方法はありますか。私はファイル内のデータを初期化することをまったく気にしません(私が使用しているプロトコル-bittorrent-は送信するファイルにハッシュを提供します。したがって、ランダムに初期化されていないデータの最悪のケースは、幸運な偶然の一致とファイルの一部を取得することです正しい)。

0 投票する
4 に答える
6647 参照

.net - DirectoryInfo.GetDirectories() と属性

DirectoryInfo.GetDirectories()特定のパスの下にあるすべてのサブディレクトリを見つけるために再帰的に使用しています。ただし、システム フォルダーを除外したいのですが、明確な方法がありません。FindFirstFile/FindNextFile では、属性がより明確になりました。

0 投票する
4 に答える
202 参照

c# - 複数のアセンブリが同じテキスト ファイルにアクセスできるようにする

同じ c#/.net ソリューションに多くのアセンブリ/プロジェクトがあります。Web アプリケーション GUI を使用して設定を保存する必要があり、その後、コンソール アプリといくつかのテスト プロジェクトが同じファイルにアクセスする必要があります。ファイルをどこに置き、どのようにアクセスすればよいですか?

「AppDomain.CurrentDomain.BaseDirectory」を使用してみましたが、最終的にはアセンブリとは異なります。また、「System.Reflection.Assembly.Get*Assembly.Location」で必要なものが得られません。

たぶん、これは私がすべきことではなく、ファイルではなくデータベースにあるのでしょうか? しかし、数行の構成でそれを行うのは非常に複雑に感じます。