我想通過c#訪問一個文件,它是通過一個不同的程序創建和處理的。
目前我通過Windows資源管理器將文件複製到不同的位置,然後與副本一起工作。由於副本很大,我寧願直接使用原始文件。有什麼辦法嗎?
正常的FileStream不允許任何共享訪問模式。我對這兩個程序都有控制權,所以如果需要的話,我也可以改變作者。C#訪問鎖定的文件
4
A
回答
4
您需要確保該程序執行寫入和讀出有正確的文件共享設置,所以你需要FileShare.Read傳遞到的FileStream構造函數的程序編寫:
new FileStream("C:/Users/phil/tmp.txt",FileMode.Create,FileAccess.Write,FileShare.Read)
你也將要確保你有計劃,這只是閱讀它啓用FileShare.ReadWrite:
new FileStream("C:/Users/phil/tmp.txt",FileMode.Open,FileAccess.Read,FileShare.ReadWrite)
這將導致的FileStream構造函數把正確的鎖文件本身。
你可以找到更多關於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只有當可以鎖定文件的詳細信息專用於此對象。 但是上傳文件的app也必須在文件鎖中進行。 如果對象不可訪問,metod返回false。
所以如果你想使用它,你必須先安裝應用程序和鎖定文件包,然後再更改數據,然後立即釋放鎖定。
相關問題
- 1. Java - 鎖定獨佔訪問的文件
- 2. 訪問一個鎖定的文件夾
- 3. 鎖定多個程序文件訪問
- 4. .net文件隨機訪問recoard鎖定
- 5. Linux ANSI C同時訪問文件和鎖定
- 6. 訪問2007鎖定
- 7. C#如何鎖定文件
- 8. C#文件被鎖定後
- 9. 文件鎖定C編程
- 10. 使用C#鎖定文件#
- 11. 事件訪問位圖,而其鎖定
- 12. 鎖定互斥鎖vs訪問磁盤
- 13. .svn /鎖文件訪問被拒絕
- 14. 資源訪問鎖定PHP
- 15. 如何使用apache poi訪問鎖定的excel文件
- 16. 用python強制複製帶有訪問鎖定的文件
- 17. C#的xml文件訪問
- 18. CPPUnit訪問定義在c文件中
- 19. C:線程之間的文件鎖定
- 20. C中的鎖定文件或目錄
- 21. 動態更改打開文件上的文件鎖定/訪問權限
- 22. 如何在用戶打開文件時鎖定對文件的訪問?
- 23. 訪問VBA - 使用AddFromFile而不鎖定參考文件
- 24. 關於在Gfortran中鎖定文件訪問
- 25. 如何鎖定文件以進行讀寫訪問O_RDWR
- 26. MDF文件安全,鎖定和未授權訪問
- 27. Wildfly 9.0.2訪問被拒絕安裝服務器鎖定文件
- 28. 如何停止「.jfm文件無法訪問」從鎖定tfs
- 29. 鎖定一個CSV文件(只允許讀取訪問)。可能?
- 30. 如何在.Net中訪問Windows全局文件鎖定表?
你是什麼意思,FileStream不允許任何共享訪問模式?有構造函數重載,允許您指定:http://msdn.microsoft.com/en-us/library/5h0z48dh.aspx –
如果正在創建和處理文件的應用程序沒有以共享訪問方式打開它也將無法做到。 – Yuck