我有以下問題。現在,我們正在關閉時寫出配置文件。發生這種情況的原因是用戶在寫入過程中遇到了進程死機,導致配置損壞。因此,我必須確保磁盤上的文件始終正確,並且沒有部分寫入的文件等。當然,我自己可以使用備份文件來實現一些模式(比如寫入備份,然後用新文件替換舊文件,檢測並恢復失敗寫入的邏輯....),但也許有一種框架那裏已經處理過了嗎?使用C#進行安全磁盤操作
0
A
回答
0
你可以在配置文件寫入到一個臨時文件,然後使用Sysyem.IO.File.Replace
方法替換爲臨時文件的實際文件:
string config = @"C:\my_config.xml";
string backup = @"C:\my_config.bak";
string temp = @"C:\temp_config.xml";
SaveConfigurationTo(temp);
File.Replace(temp, config, backup);
如果你不想創建一個備份舊的配置文件,你可以通過null
作爲第三個參數。
請參閱:File.Replace Method在MSDN上。
1
與Windows Vista一起引入的事務性NTFS允許在文件系統上執行原子操作(讀,寫,刪除...)。
這裏有一個託管的包裝,你可以使用的.Net:http://archive.msdn.microsoft.com/txfmanaged
請注意,遺憾的是,微軟正在考慮自嘲的Windows這個大特點。見http://msdn.microsoft.com/en-us/library/windows/desktop/hh802690(v=vs.85).aspx
相關問題
- 1. 安全使用時刻進行日期操作
- 2. 在C++中使用enum進行整數位操作可靠/安全嗎?
- 3. 安裝磁盤映像時從磁盤仲裁中進行雙重回調
- 4. C# - 使用XmlDocument進行Xml操作
- 5. 使用持久磁盤備份PostgreSQL的安全方式
- 6. 掛鉤磁盤寫入操作? Win32/64
- 7. 使用C/C++訪問RAW磁盤
- 8. 鍵盤操作 - C#
- 9. 使用最少磁盤操作的大數據 - MapReduce
- 10. C#treeview線程安全操作
- 11. Cpanel磁盤使用
- 12. 是否使用線程本地存儲安全進行此操作?
- 13. Linux使用磁盤作爲進程的ram
- 14. AWS未加密的磁盤重用:安全
- 15. 使用內存磁盤進行I/O單元測試
- 16. 瓶 - 等到磁盤安裝
- 17. 用於在C/C++中進行泊松磁盤採樣的代碼/庫
- 18. 使用compareAndSet進行線程安全
- 19. 使用SOAP進行安全連接
- 20. 此操作是否安全?
- 21. 不安全的操作
- 22. canvas toDataURL() - 操作不安全
- 23. 如何計算加盟費用?我想知道磁盤操作?
- 24. 二進制操作用C
- 25. 如何在C#中使用泛型進行安全的投射?
- 26. 使用C++進行線程安全並通過參考傳遞
- 27. 使用C#.NET中的OCX進行線程安全
- 28. 磁盤使用格式
- 29. TFS 2008磁盤使用
- 30. mysql - 磁盤使用優化
您可能會看看自Vista以來可用的事務性文件系統。你需要PInvoke來使用它。另一種方法是使用數據庫而不是文件 – 2013-04-04 12:04:01