問題タブ [file-locking]

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 投票する
8 に答える
53278 参照

c# - C#で別のプロセスによってロックされているファイルを削除するにはどうすればよいですか?

C# を使用して、別のプロセスによってロックされているファイルを削除する方法を探しています。このメソッドは、ファイルをロックしているプロセスを見つけて (おそらくハンドルを追跡することによって、C# でこれを行う方法がわかりませんが)、そのプロセスを閉じてから、 を使用してファイルの削除を完了する必要があると思いますFile.Delete()

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

java - WindowsでJavaからファイルを強制的に削除する

ファイルが何らかのプロセスによってロックされている場合でも、JavaからWindowsでファイルを強制的に削除するプログラム的な方法はありますか?ファイルをロックするプロセスを強制終了できません。

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

c++ - C++ を使用した Linux でのソース ファイルのロック/編集禁止

C++ を使用して Linux でソース ファイルをプログラムでロック/ロック解除する、または編集を禁止/有効にする方法を教えてください。

ソース ファイルをロックして、エディターで開いた場合に同じソース ファイルに保存できないようにしたいと考えています。

アクセス許可を読み取り専用に変更することを考えています (後で読み取り/書き込みに戻す): C++ からそれを行うにはどうすればよいですか?

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

c# - .NET のプロセスによってロックされているファイルのロックを解除するにはどうすればよいですか

アプリケーションで使用したすべての一時ファイルを消去したいのですが、問題は、すべての一時ファイルが制御下にあるわけではないため、プログラムで削除するために「残酷に」ロックを解除したいだけです。

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

c# - .NET を使用してファイルをロックしているプロセスを確認するにはどうすればよいですか?

HandleまたはProcess Monitorの使用に関するいくつかの回答を見てきましたが、自分のコード (C#) でどのプロセスがファイルをロックしているかを確認できるようにしたいと考えています。

win32 API について詳しく調べなければならないのではないかという嫌な予感がしますが、もし誰かがすでにこれを行っていて、私を正しい軌道に乗せることができれば、助けていただければ幸いです。

アップデート

同様の質問へのリンク

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

c# - WinFormsアプリからアンロックを使用してファイルのロックを解除しますか?

アンロックを使用して、C#プログラムからファイルのロックを解除しようとしています。

私のUIには、アプリが削除できなかったファイルのロックを解除するためのボタンを配置しました。ユーザーがボタンを押すと、アンロック(有名なアプリ)を開いてほしい。

Unlocker Webで読んだことがあり、使用するコマンドラインについていくつかの説明がありますが、何も機能しません。

次のコードを記述しましたが、何も起こりません。

"c:\ Program Files \ unlocker \ unlocker.exe" -L "PATHFORTHEFILE.doc"

何も起こりません。パラメータなしで-LUを使用して試しました。

何か案が?

それをソフトウェアと統合するためにアンロックよりも効率的なものはありますか?

0 投票する
14 に答える
208203 参照

python - Python でファイルをロックする

Python で書き込むためにファイルをロックする必要があります。一度に複数の Python プロセスからアクセスされます。オンラインでいくつかの解決策を見つけましたが、多くの場合、Unix ベースまたは Windows ベースのみであるため、ほとんどの場合、私の目的には失敗します。

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

unix - 人間とプログラムがお互いに足を踏み入れることなく同じファイルにアクセスできるようにする方法

監視している URL のリストを含むファイル urls.txt があるとします。私の監視スクリプトは、そのファイルをときどき編集して、たとえば、各 URL が到達可能かどうかを示します。また、そのファイルを手動で編集して、URL のリストを追加または変更したいと考えています。手動で編集するときに考える必要がないようにするにはどうすればよいですか?

ここにいくつかの可能な答えがあります。あなたならどうしますか?

  1. vimまたはemacsが作成するロックファイルをプログラムにチェックさせるなどのハッカーに従事します。これは私だけのものなので、これは実際に機能します。

    • 人間による編集が常に優先される場合は、常に人間がプログラムの変更を上書きするようにします (たとえば、ファイルがディスク上で変更されたという編集者の警告を無視します)。その後、プログラムは次のループで変更をやり直すことができます。それでも、ユーザーがファイルを編集している間にファイルを変更するのはあまり良くありません。

    • プログラムが進行中の変更を行っているファイルに人間が触れないようにしてください。設計を再考し、人間だけが編集する 1 つのファイルと、プログラムだけが編集する別のファイルを用意します。

    • 適切なファイル ロックを行うファイルを編集するためのカスタム ツールを人間に提供します。これは、ファイルをロックしてからエディターを起動するか、ファイルからエントリを挿入/変更/削除するためのカスタム インターフェイス (おそらく単純なコマンド ライン インターフェイス) を起動するのと同じくらい粗雑です。

    • フラット ファイルの代わりにデータベースを使用すると、ロックはすべて自動的に処理されます。

(これをより具体的にするためにURL監視の例を作成したことに注意してください。実際に考えていることはおそらくあまりにも奇妙で気を散らすものであるためです。この質問は、人間とプログラムの両方が同じ状態ファイルを変更できるようにする方法に厳密に関連しています。)

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

c# - FileSystemWatcher.WaitForChangedが返されますが、ファイルはまだロックされています

ドキュメントをpdfプリンタードライバーに送信し、そのドライバーが特定のディレクトリに印刷するプログラムがあります。印刷後、PDFを電子メール(MailMessage)に添付して送信したいと思います。

現在、ドキュメントをプリンターに送信し(新しいプロセスを生成します)、FileSystemWatcher.WaitForChanged(WaitForChangedResult.Created)を呼び出しますが、オブジェクトが作成されても「印刷」は行われず、PDFプリンターにはまだそのファイルを電子メールに添付しようとするとエラーが発生します。

  • プレーンなThread.Sleep(2000)などを検討しましたが、それは理想的とは言えません。
  • 添付コードをtry/catchブロックに入れて失敗時にループすることを検討しましたが、これも悪いニュースです。

私は本当にエレガントな解決策を考えることはできません。

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

visual-studio-2008 - TFSはフォルダの名前変更を許可せず、ロックがあると主張します

Visual Studio 2008で、名前のタイプミスのためにフォルダーの名前を変更したいと思います。ソリューション構造で名前を変更します。これで、フォルダーと.CSProjファイルがチェックアウトされ、チェックインします。

TFSには、「操作に関係するファイルの一部がロックされているため、現時点ではMicrosoftVisualStudioはソース管理操作を実行できません。後で操作を再試行してください」というメッセージが表示されます。

ソース管理エクスプローラーを見ると、フォルダーとその中のファイルがまったくチェックアウトされていないことが確認できます。.csprojとcsproj.vspsccは、他の1人のユーザーによって「編集」されます。

何が起きてる?

変更を元に戻そうとすると、同じメッセージが表示されます。変更を元に戻す前に、強制的に最新バージョンを取得する必要があります。どうしたの?

最終的な修正は、他のすべてのユーザーに.csprojをチェックインさせ、ソース管理エクスプローラーでフォルダーの名前を変更することでした。この時点では機能しましたが、以前は機能していませんでした。

名前の変更のチェックインは成功し、古い名前への参照は次のチェックインでクリーンアップされました。