私はc#でファイルにアクセスしたいですが、これは別のプログラムで作成されています。
現在のところ、ファイルをWindowsエクスプローラ経由で別の場所にコピーしていて、そのコピーを使用しています。コピーが大きいので、私は元のファイルとまっすぐに作業することを好むでしょう。何か方法はありますか?
通常のFileStreamは共有アクセスモードを許可していません。私は両方のプログラムを管理しているので、必要ならばライターも変更することができます。C#でロックされたファイルにアクセスする
4
A
答えて
4
あなたがプログラム書き込み用のFileStreamコンストラクタにFileShare.Readに合格する必要がありますので、書き込みや読み出しを行うプログラムは、右のファイル共有が設定されていることを確認する必要があります。
new FileStream("C:/Users/phil/tmp.txt",FileMode.Create,FileAccess.Write,FileShare.Read)
これは、のFileStreamコンストラクタは、ファイル自体に正しいロックをかけることになります
new FileStream("C:/Users/phil/tmp.txt",FileMode.Open,FileAccess.Read,FileShare.ReadWrite)
:また、あなたがFileShare.ReadWriteはちょうどそれを読んでいるプログラムのために有効になっていることを確認するだろう。
あなたは、MSDNのコンストラクタについての詳細を調べることができます:http://msdn.microsoft.com/en-us/library/5h0z48dh.aspx(また、ファイル共有パラメータを取り、他のオーバーロードもあります)
0
あなたが複数のアプリケーションからファイルにアクセスするための私のライブラリを使用することができます。あなたはnugetからそれをインストールすることができます
:インストール・パッケージXabe.FileLock
をあなたはそれについての詳細な情報が必要な場合は、ファイルをロックすることができた場合にのみ https://github.com/tomaszzmuda/Xabe.FileLock
ILock fileLock = new FileLock(file);
if(fileLock.Acquire(TimeSpan.FromSeconds(15), true))
{
using(fileLock)
{
// file operations here
}
}
fileLock.Acquireメソッドはtrueを返しますチェックこのオブジェクト専用。 しかし、アップロードするファイルはファイルロックでも実行する必要があります。 オブジェクトにアクセスできない場合、metodはfalseを返します。
このアプリを使用するには、アプリとロックファイルの両方のパッケージをインストールしてから、データを変更してすぐにロックを解除する必要があります。
関連する問題
- 1. Gulp - コンパイルされたファイルをロックする
- 2. ロックされたファイルを移動する
- 3. RavenDb、ファイルにアクセスできない、ファイルがロックされている、または使用中です
- 4. Obj-C 2.0で合成されたatomic @propertiesのロックの詳細をロックする
- 5. PHP編集のためにロックされたファイルへのアクセス - パーミッションが拒否されたエラー
- 6. vshost.exeによってロックされたイメージファイルを削除するC#
- 7. Pythonでロックされたファイルを検出して削除する
- 8. ロックされたファイルをWIN 2000サーバーで監視する方法
- 9. boost :: interprocess :: file_lockでロックされたファイルを作成する
- 10. ロックされたファイルを削除するには?
- 11. ユーザーアカウントがロックされているとロックされたメッセージでログインページにリダイレクト
- 12. Javaでバイアスされたロック
- 13. WPF UIのロックされたプロセスのロック
- 14. 別のスレッドで作成されたファイルにアクセスする
- 15. C#ファイルをロックする方法
- 16. C++ catch(...)ブロックでスローされた例外にアクセスできる
- 17. Javaの同期ブロックで使用されるロックにアクセスできますか?
- 18. CでExcelファイルにアクセスする方法
- 19. C#で書かれたWindowsサービスからマップされたフォルダにアクセスする
- 20. PythonからC-宣言されたネストされた構造体にアクセスする
- 21. C#reportviewerのネストされたリストのデータにアクセスするには?
- 22. CPPUnitアクセスはCファイルで定義されています
- 23. TFS内のすべてのロックされたファイルを検索
- 24. iOS、iPadに保存されたファイルにアクセスする
- 25. PHPロックされたIPアドレス
- 26. "LockWorkStation()"を使用してロックされた後にウィンドウをロック解除するC++スクリプト
- 27. ロック前のフックにロックのコメントにアクセスする
- 28. Microsoft VSHADOW.EXEシャドウコピーにはロックされたファイルが含まれていますか?
- 29. C#のロックスコープ:返されたオブジェクトはまだ「ロックされていますか?
- 30. C:\ ProgramDataからファイルにアクセスしようとすると「アクセスが拒否されました」
FileStreamが共有アクセスモードを許可しないということを意味しますか?コンストラクタオーバーロードがあり、以下のように指定できます。http://msdn.microsoft.com/en-us/library/5h0z48dh.aspx –
ファイルを作成して処理しているアプリケーションが共有アクセスで開くのではない場合どちらにもできません。 – Yuck