問題タブ [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 に答える
58226 参照

java - Java を使用して、アクティブに書き込み中のファイルから読み取るにはどうすればよいですか?

ファイルに情報を書き込むアプリケーションがあります。この情報は、アプリケーションの成功/失敗/正確性を判断するために実行後に使用されます。これらの成功/失敗/正確性のチェックをリアルタイムで実行できるように、ファイルが書き込まれているときにファイルを読み取れるようにしたいと考えています。

これは可能だと思いますが、Java を使用する際の落とし穴は何ですか? 読み取りが書き込みに追いついた場合、ファイルが閉じられるまでさらに書き込みを待つだけですか、それともこの時点で読み取りが例外をスローしますか? 後者の場合、私は何をしますか?

私の直感は現在、私を BufferedStreams に向かわせています。これは行く方法ですか?

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

windows - ディスクから良好な同時読み取りパフォーマンスを得る方法

質問をしてから、自分の回答でフォローアップしたいのですが、他の人がどのような回答をしているかも確認したいと思います。

2 つの別々のスレッドから同時に読み取りたい 2 つの大きなファイルがあります。一方のスレッドは fileA を順次読み取り、もう一方のスレッドは fileB を順次読み取ります。スレッド間でロックや通信は行われず、両方とも可能な限り高速に順次読み取りを行い、読み取ったデータをすぐに破棄します。

Windows でのこのセットアップの経験は非常に貧弱です。2 つのスレッドを合わせたスループットは、2 ~ 3 MiB/秒のオーダーです。ドライブは、ほとんどの時間を 2 つのファイル間で前後にシークしているように見えます。おそらく、各シーク後にほとんど読み取っていません。

スレッドの 1 つを無効にして、一時的に 1 つのスレッドのパフォーマンスを調べると、帯域幅が大幅に向上します (このマシンでは ~45 MiB/秒)。したがって、2 スレッドのパフォーマンスが悪いのは、明らかに OS ディスク スケジューラの影響です。

同時スレッド読み取りのパフォーマンスを改善するためにできることはありますか? おそらく、別の API を使用するか、OS ディスク スケジューラのパラメーターを何らかの方法で微調整することによります。

いくつかの詳細:

ファイルは、2 GiB の RAM を搭載したマシン上でそれぞれ 2 GiB のオーダーです。この質問の目的のために、それらはキャッシュされておらず、完全に最適化されていないと考えています。これが事実であることを確認するために、最適化ツールを使用して再起動しました。

これらのファイルを読み取るために、特別な API は使用していません。この動作は、Win32 の CreateFile、C の fopen、C++ の std::ifstream、Java の FileInputStream など、さまざまなボグ標準 API で再現可能です。

各スレッドはループ内でスピンし、read 関数を呼び出します。各反復で API から要求されるバイト数を、1KiB から 128MiB までの値に変更しました。これを変更しても効果がないため、各ディスク シーク後に OS が物理的に読み取っている量は、この数値によって決定されないことは明らかです。これはまさに期待すべきことです。

1 スレッドと 2 スレッドのパフォーマンスの劇的な違いは、Windows 2000、Windows XP (32 ビットおよび 64 ビット)、Windows Server 2003、およびハードウェア RAID5 の有無にかかわらず再現可能です。

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

perl - Perl でディレクトリの内容を読み込むにはどうすればよいですか?

Perl に特定のディレクトリの内容を配列に読み込ませるにはどうすればよいですか?

バックティックでもできますが、「 scandir」などを使った方法はありますか?

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

c# - ファイルがアクセス可能になったときにイベントを発生させることは可能ですか?

C#では、FileSystemWatcherオブジェクトを使用して特定のファイルを監視し、ファイルの作成、変更などの際にイベントを発生させることができます。

このクラスで私が抱えている問題は、ファイルを作成したプロセスがまだ書き込み中であっても、ファイルが作成された瞬間にイベントが発生することです。これは非常に問題があることがわかりました。特に、XMLドキュメントのようなものを読み込もうとしている場合、ファイルには、書き込みが完了するまで存在しない構造が必要です。

.NET(できれば2.0)には、ファイルがアクセス可能になった後にイベントを発生させる方法がありますか、それとも、ファイルが使用可能であることを確認するために例外がスローされなくなるまで、ファイルの読み取りを常に試行する必要がありますか?

0 投票する
5 に答える
30753 参照

c# - C# Web アプリでネットワーク共有からファイルにアクセスする

ネットワーク共有からファイルを読み取る (場合によっては書き込む) 必要がある Web アプリケーションがあります。これを行うための最良の方法は何だろうと思っていましたか?

ネットワーク サービスまたは aspnet アカウントにネットワーク共有へのアクセス権を付与できません。なりすましが使えるかもしれません。

ネットワーク共有と Web アプリケーションは両方とも同じドメインでホストされており、特にこの目的のためにドメインに新しいユーザーを作成できますが、ファイルストリームの作成と使用する資格情報の指定の間のドットを結合する方法がよくわかりませんウェブアプリケーションで。


残念ながら、ドライブはマシン上のネットワーク ドライブとしてマップされていません。ネットワーク共有としてのみ使用できるため、透過的な呼び出しを行うことができません。

なりすましについて考えられる問題が 1 つあります。アプリケーション ドメインごとに 1 人のユーザーしか偽装できないと思いますが、修正されてうれしいです。このファイルをいくつかの異なる共有に書き込む必要があるかもしれません。つまり、複数のユーザーになりすます必要があるかもしれません。

トークンを作成するというアイデアが気に入っています...それができれば、事前にユーザーに資格情報を要求し、セキュリティを動的に適用して、アクセスが拒否された場合に意味のあるエラーメッセージを表示できます...私は遊びに行っていますが、アップデートで戻ってきます。

0 投票する
10 に答える
26639 参照

c++ - std::fstream クラスが std::string を取らないのはなぜですか?

これは設計上の問題ではありませんが、そのように思えるかもしれません。(まあ、それは一種の設計上の問題です)。私が疑問に思っているのは、なぜ C++std::fstreamクラスがstd::stringコンストラクターまたはオープン メソッドで を使用しないのかということです。誰もがコード例が大好きなので:

これは、ファイルを操作するときに常に私を悩ませます。確かにC++ライブラリはstd::string可能な限り使用しますか?

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

python - プログラムによる Python ソースの編集

これは私が非常に役立つと思うものです。基本的に、人間の介入を必要とせずにプログラムで Python ソースを編集する方法があればいいのにと思います。これでやりたいことがいくつかあります。

  1. 構成にソース モジュールを使用する Python アプリの構成を編集します。

  2. その場で Python ソース ファイルをカスタマイズできるように、「テンプレート」を設定します。このようにして、作業中のオープン ソース アプリに「プロジェクト」システムをセットアップし、特定のファイルをカスタマイズできるようにします。

私はおそらくこれを自分で行うことができる何かを書くことができますが、多くの「悪魔は細部に宿る」タイプの問題を開くことがわかります。現在これを行う方法はありますか、それとも自分で弾丸を噛んで実装する必要がありますか?

0 投票する
7 に答える
28609 参照

java - Javaでファイルの作成時間を発見する方法は?

Javaでファイルの作成時間を発見する簡単な方法はありますか? File クラスには、「最終変更」時刻を取得するメソッドしかありません。Google で見つけたいくつかのリソースによると、すべてのファイル システムが作成時間の概念をサポートしているわけではないため、File クラスは getCreationTime() メソッドを提供していません。

私が見つけた唯一の実用的な解決策は、コマンドラインをシェルアウトして「dir」コマンドを実行することです。これは、ファイルの作成時間を出力するようです。これはうまくいくと思います.Windowsをサポートする必要があるだけですが、エラーが発生しやすいようです.

必要な情報を提供するサードパーティのライブラリはありますか?

更新:結局のところ、サードパーティのライブラリを購入する価値はないと思いますが、API はかなり優れているように見えるので、この問題を抱えている他の人にとってはおそらく良い選択です.

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

.net - .NET を使用してテキスト ファイルの読み取りと解析を強化するための代替手段

さまざまなテキスト ファイルから読み取る必要があります (区切りファイルと固定幅ファイルがいくつかあります)。ファイルを1行ずつ解析し(File.ReadLineタイプのメソッドを使用すると遅い)、ODBCテキストドライバーを使用してファイルを読み取る(より高速)ことを検討しましたが、他に(より良い)提案はありますか?.NET/C# を使用しています。

0 投票する
5 に答える
5105 参照

asp.net - マルチスレッド環境でのファイルアクセス戦略(Webアプリ)

Webサービスから取得され、Webアプリケーション内にローカルにキャッシュされたデータのXML表現であるファイルがあります。このデータは非常に静的ですが、変更される可能性があるという考え方です。そこで、ファイルにキャッシュするように設定し、モニターを貼り付けて、削除されているかどうかを確認しました。削除されると、ファイルはソースから更新されて再構築されます。

ただし、マルチスレッド環境では、ファイルの読み取り/書き込み中にデータにアクセスしようとしているため、明らかに問題が発生しています。

これは、ロックするオブジェクトを追加したため、混乱を招きます。これは、読み取り/書き込み中は常にロックされます。他のスレッドからのアクセスの試みは、ロックが解除されるまで「待機」するように指示されるというのが私の理解でしたか?

お知らせするために、私はマルチスレッド開発に本当に慣れていないので、これが私の側の混乱であることを完全に受け入れます:)

  • 私は何かが足りないのですか?
  • マルチスレッド環境での最良のファイルアクセス戦略は何ですか?

編集

申し訳ありませんが、これはASP.NET2.0を使用していると言っておくべきでした:)