因此,我需要創建一個文件,然後向它寫入一行,並且這必須是原子的。因此,在初始化時,沒有其他進程可以修改文件。
我有一個想法,鎖定不同的東西,然後鎖定,做的操作,然後釋放鎖讓對方進來。它可能不是原子的(我猜)。沒有其他辦法可以做到這一點?在操作系統級別的一次原子操作中創建並寫入文件
1
A
回答
3
我建議你寫臨時文件,然後重命名它到你的文件。我不確定這個操作在java中是否作爲所有操作系統的原子實現,但至少在Unix上你有機會,因爲我認爲它使用與原子相同的調用mv
。
我猜,它在windows上不會是真正的原子。對於大多數應用來說,這將是「幾乎是原子的」。
0
如果你想要安全的保護其他進程,我建議你閱讀http://en.wikipedia.org/wiki/File_locking並利用JNI來達到操作系統級別。
相關問題
- 1. 創建原子數據庫和文件系統操作
- 2. 在Dokan文件系統上識別Office文件寫入操作
- 3. 檢測操作系統級別的引發事件(操作系統外觀)
- 4. 創建操作系統
- 5. 寫一個原子操作
- 6. 使用系統調用操作創建文件並寫入隨機字符
- 7. 在Windows操作系統中的pathos軟件包操作系統
- 8. 操作系統注入和操作系統命令注入的區別
- 9. 操作系統 - 一般進程創建
- 10. 獲取在Windows操作系統中寫入文件的權限
- 11. 操作系統特權級別與硬件特權級別
- 12. 在Java中跟蹤操作系統級別的窗口事件
- 13. Python:如何在操作系統中打開時寫入文件
- 14. 這是怎麼回事(在操作系統級別),當我在讀/寫文件?
- 15. 操作文件系統
- 16. FUSE文件系統操作
- 17. 識別操作系統
- 18. 嵌入式操作系統和桌面操作系統的區別
- 19. 操作系統如何創建唯一的文件句柄?
- 20. 文件寫入行爲因R中的操作系統而異?
- 21. 在操作系統終端中創建pg_dump文件
- 22. svn刪除文件夾(操作系統級別)
- 23. 在操作系統中搜索文件
- 24. 在Prolog中識別操作系統
- 25. 什麼文件系統操作需要原子?
- 26. 的Javascript原子一系列操作
- 27. Innodb:文件操作中的操作系統錯誤號碼1117
- 28. 操作系統中
- 29. 操作系統
- 30. 爲手機創建linux操作系統
感謝我們已經考慮過它,但它的javadoc是相當令人沮喪的...無論如何,除了java7'Files.move',似乎沒有其他選擇。太糟糕了,我們在java6 ... – zeller