問題タブ [file-in-use]
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# - StreamWriter を閉じた後に使用中の例外ファイルを解決する
エラーが発生しています:
私のプログラムは、ログ ファイルをフラッシュし、閉じて、破棄します。私のプログラムは後でファイルを開いてさらにデータを追加しようとします。この 2 回目の開始により、上記の例外が発生します。
Process Explorer
実行中に、バイナリ ファイルに直接アクセスするか、MS Visual C# Express 2008 を使用してデバッグ モードで実行すると、ファイルのハンドルが表示されません。
このファイルはアプリケーションによって作成された元のファイルであるため、 他のプロセスがこのファイルを使用することはありません。
スタック オーバーフローの解決策の中には、using
ステートメントの実装を提案するものがありますが、データの書き込みが単純または短い複合ステートメントで行われないため、これは実行できません。ライター デリゲートは、ログ クラスによってデータをファイルに書き込むために使用されます。
Stack Overflow の他のソリューションによると、for
ループ内で、ファイルが開かれる次の繰り返しの前にファイルが閉じられない場合があります。ファイルを再度開く前に10秒以上待っていましたが、役に立ちませんでした(同じ例外)。
コードのサンプルを次に示します。
締め切りがあるので、この問題の解決策を探しています。私のアイデアのいくつかは次のとおりです。
- ファイルを開いたままにします。試運転中は開閉しないでください。
- ファイルをポーリングしている間、ユーザーに「ファイルを待っています」というメッセージを表示します (いつ再び開くことができるかを確認するため)。
- ファイル I/O を処理するアンマネージ C または C++ ライブラリを作成します (アンマネージ C および C++ は .NET フレームワークを使用しないため)。
- 急いでファイルを閉じるように .NET フレームワークに指示する方法を学習します。
Windows 7、64 ビット アーキテクチャで MS Visual C# 2008 Express を使用しています。
registry - Windowsの自動更新を検出する
コアOSファイルを置き換えるソフトウェアがあります。問題は、Microsoft Updateがこれらのファイルを置き換え、プログラムが動作しなくなることです。自動更新により、起動時にファイルの置き換えを検出するにはどうすればよいですか?
私の考えは、いくつかのキーのレジストリウォッチです。どのキーですか?他のアイデアはありますか?
delphi - Delphiは、ファイルのコピープロセスが完了するまで待機します
ReadDirectoryChangesW
フォルダ内のファイルが追加または削除されたときに通知するために使用するスレッドがあります。
新しい画像ごとに、ファイルを開いて画像のサムネイルを作成します。ただし、ファイルが宛先フォルダーに完全にコピーされる前に通知を受け取ったように見えます。その場合、サムネイルの一部しか表示されません。(ファイルはリモートロケーションから中央サーバーにコピーされ、ネットワークはピーク時に遅くなる可能性があります。)
ファイルが使用されているかどうかを確認しますが、画像ファイルでは機能しないようです。
私の質問はこれです:ファイルが完全にコピーされたことを検出する方法はありますか、それとも最後にチェックしたときからファイルサイズまたは最終変更時刻が変更されなくなるまで待つだけですか?
c# - 実行中の実行可能(exe)ファイルの名前を変更します
一度に複数のサーバーに更新をプッシュしようとしていますが、マネージャーは実行中の.exeファイルの名前を変更できることを発見しました。その知識を使用して、実行中のexeの名前を変更し、そのexeの新しいバージョンをコピーして、foo.exeのメモリ内コピーを実行している人は誰でも問題なく、foo.exeを指すショートカットを開いた人は誰でも新しいコピーを取得できるようにします。更新が適用されました。
私は明確にする必要があると思います、彼は古いコピーが魔法のように更新されることを期待していません、彼は彼らが再びexeを開くまで古いコピーを実行し続けることを期待しています、その場合それは名前を持つ新しいものを開きます古いものの。
ファイルがプログラムで使用されているという例外がスローされることがありますが、ループ内でファイルの名前を変更しようとすると、最終的には成功します。私のマシンでは、ループの中でもまだ動作させることができていません。
私の最初のそして主な質問はこれです:これをすることは今までに受け入れられますか?実行中の実行可能ファイルの名前を変更することは、有効なシナリオである必要がありますか?
第二に、それが有効なシナリオである場合、どうすればこれを確実に行うことができますか?私たちの現在の考えは、File.Move(C#)を使用して名前の変更を何度も試み、それが機能しない場合は、手動で処理できるようにエラーログに書き出すことです。
php - PHPを使用してファイルの変更を確認する
ファイルがphpスクリプトから別のプロセスによってアクセスまたは変更されていることを確認する方法はありますか? filemtime()、fileatime()、および filectime() 関数を使用しようとしましたが、継続的にチェックしているループ内にスクリプトがありますが、スクリプトが実行されると、最初から時間がかかるようですファイルがチェックされました..例は、FTPまたはSMB共有にファイルをアップロードすることです。私はこれを以下で試みました
ファイルが絶えず変化していることはわかっていますが、$LastMod 変数は更新されていませんが、プロセスを終了して再度実行すると、ファイルから新しい $LastMod が取得されますが、ファイルがループでチェックされるたびに更新されないようです。
私もfilesize()を見てこれを試みましたが、flock()も調べたのと同じ症状が出ましたが、ファイルがPHPの外部で作成または変更されたため、これがどのように機能するかわかりません。
誰か解決策があれば教えてください
ありがとう Vip32
PS。PHP を使用してファイルを処理し、必要に応じて mysql とやり取りし、外部 Web サイトにクエリを実行する
c# - 「ファイルは別のプロセスで使用されています」エラーを修正する方法
データグリッドビューに表示されるキーと値のペアを使用して、データグリッドビューを介して .exe.config ファイル (アプリ構成) の内容を変更できるプログラムを作成しました。問題は、古い値をユーザーが入力した新しい値に置き換える保存設定があることです。保存され、次にファイルを開くと上書きされますが、設定ファイルを読み込んで設定が変更されたことをユーザーに更新しようとすると、「ファイルは別のプロセスで使用されています」というエラーが表示されます。
これはコードです:
エラーは、SaveAppSettings の下の loadconfigfile 関数で発生します。ファイルが別のプロセスで使用されているため、ファイルにアクセスできないことがわかります。ファイルを再度開いてユーザーに表示する前に、何かする必要がありますか?
どうもありがとう、
Tf.rz
objective-c - 他のプロセスで使用中のファイルを検出する
Windowsなどでは、ファイルを見つけるためのトリックを使用して、現在使用されています(具体的に記述されています)。
私は書き込み用にファイルを開くために使用しますが、失敗した場合は、別のプロセスがファイルへのアクセスでビジー状態になっている可能性があります。
残念ながら、これらのトリック(書き込み専用のロック付きのC OPENを使用)は私のMacでは機能しません。ターミナルでのカールがまだ書き込みをしている間、-fileBusy()チェックは失敗します。
F_GETLKを使用してfdをfcnt呼び出ししても、ロックは明らかになりません。
ファイルが別のプロセスで使用されているかどうかを検出する機会はありますか?
PS> fseventsのリッスンは、他のアプリ/プロセスによって作成された後に私のアプリが起動するため実行できません。
c# - 削除時に別のプロセスによって使用されているため、プロセスはファイルにアクセスできません
リーダーを閉じて破棄することでこの問題を解決したと思っていましたが、それでもファイルが使用されている場合がありました。次にガベージコレクターを呼び出したので、ファイルが解放されます。これにより、このエラーが発生するすべての問題の 99% が解決されます。使用したコード:
Finish は、ファイルのコンテンツを処理する大きなプロセスの後に呼び出されます。
1 行 (または非常に少ない行) のファイルを処理すると、このエラーが発生することがあります。Windowsが速すぎてDeleteFile();
失敗するようです。このエラーを再現するのは非常に困難ですが、2 回続けて発生することがあります。
これは、処理に 2 秒以上かかるファイルを処理する場合には発生しません。
ファイルがGBになる可能性があり、Windowsはメモリがいっぱいになるとそれを好まないため、使用できません。また、この方法でプロセスのパフォーマンスが向上します。
質問:
このエラーを防ぐために他にできることはありますか?
PS: 詳細については、お気軽にお問い合わせください。
編集:
ファイルを削除するコード
ファイルを作成するコード
リーダーを作成するコード
抽象クラスを使用して、入力の読み取り方法を決定します。次のステートメントで、ファイルの内容をループします。
メソッド NextRow() は次のようになります
while ループが閉じた後、finish プロセスを呼び出します。FileReader.Finish();
file - ファイルはまだ使用中です エラー 32 どうすれば解放できますか?
次のコードを使用してファイルをアップロードしています。
アップロードが成功した後、ファイルを削除しようとしていますが、32 - File in use エラーが発生します。
このファイル使用エラーを解決する方法を誰か教えてもらえますか? 次のコードはファイルをアップロードしていますが、完了しても解放していません..
app-store - ワイルドカード アプリ ID から明示的なアプリ ID にアップグレードしてプッシュ通知を許可する
約 300,000 人のメンバーがいるアプリにプッシュ通知を追加したいと考えています。残念ながら、私は最初にワイルドキャット バンドル ID を使用してアプリを作成し、それを Apple にアップロードし、ファイルcom.MyCompany.*
で編集したときに、plist
com.MyCompany.MyAppName
プッシュ通知を追加したいので、一意の (または EXPLICIT) アプリ ID を作成する必要があるため、呼び出される ID を作成しようとしましたcom.MyCompany.MyAppName
...次のエラー メッセージが表示されました。The bundle identifier you have specified is already in use. Please select another.
アプリ ID を確認したところ、com.MyCompany.*
. ですから、私が削除できるものではありません。メッセージは、ワイルドカード アプリ ID を使用して既に公開されているアプリのライブ バージョンを参照している必要があります...
メンバーにプッシュ通知を送信できるように、ワイルドキャット アプリ ID を明示的なアプリ ID に変換するにはどうすればよいですか?
約 2 時間ウェブを検索しましたが、皆さんがしなければならないことは、アプリの現在のライブ バージョンと同じバンドル ID を持つ新しいアプリ ID を作成することだけだと言っているようです...だから私は推測していますこのエラー メッセージThe bundle identifier you have specified is already in use. Please select another.
は、他の誰もこの問題を経験していないように見えるため、ごく最近まで存在しなかった新しいエラー メッセージです...
どんな助けでも大歓迎です!