修改文件時,是否總是需要重寫整個文件,還是有可能找到並更改文件的一小部分,而不必重寫整個文件?修改文件時,是否需要重寫整個文件?
回答
如果您沒有插入或刪除數據,則不需要重寫該文件。您將用新值替換現有字節,或附加到文件。
如果您需要插入或刪除,您只需從該點開始重寫文件。唯一需要重寫整個文件的時間是在開始時插入字節。
可以同時打開具有讀寫權限的文件。這樣,您可以搜索文件,查找您想查找的任何文件,一旦您擁有可以尋求的位置(從內存中,寫指針與讀指針分開),並將數據覆蓋到您心中的內容=)
正如我懷疑的那樣,在我的場景中重寫整個文件可能更有意義,因爲我在整個刪除角色,但這很好理解。謝謝! – 2012-07-26 05:13:20
如果你不改變數據長度的長度,你總是可以找到文件中的適當位置,並寫入一組新的字節。這取代原來在那裏的任何字節。
有兩種可能的方式:
- 當您使用
StreamWriter sw = new StreamWriter
它將從文件中刪除數據。 要僅更改,可以將文件數據存儲在
List<string>
中。這對我的作品好看:List<string> lines_list = new List<string>(); int file_l = 0 StreamReader sr_temp = new StreamReader(_path); string line; while ((line = sr_temp.ReadLine()) != null) { lines_list.Add(line); file_l++; } sr_temp.Close(); StreamWriter sw = new StreamWriter(_path); for (int i = 0; i < file_l; i++) { sw.WriteLine(lines_list[i]); } //here you add some data sw.Close();
謝謝John,但問題是這些文件非常大,所以我正在尋找一些不需要我一次將整個文件加載到內存中的東西。另外,即使你沒有修改數據,你仍然在重寫它,這是我想知道我是否可以避免。 – 2012-07-26 05:08:42
啊,好的。感謝您的反饋。 :) – 2012-07-26 05:10:08
- 1. 何時需要修改Python __init__文件?
- 2. O_LARGEFILE是否需要編寫大文件?
- 3. 是否可以修改大文件的幾個字節而不必再次重寫整個文件?
- 4. 寫入文本文件時是否需要清理POST數據?
- 5. 是否需要手動修改「pg_hba.conf」文件?
- 6. 是否需要頭文件?
- 7. 是否需要resx文件?
- 8. dpd-email/nodemailer不需要修改文件
- 9. 文件過濾修改需要
- 10. Javascript - 切片文件 - 需要修改javascript
- 11. 修改.ui文件需要'make clean'
- 12. project.xcworkspace文件是否重要?
- 13. 更改php.ini文件後是否需要重新啓動Apache?
- 14. 在編寫測試時,是否需要提供文件mainpulation函數的文件?
- 15. 需要修改這個log4net的寫入到文件中,寫入多個文件的能力
- 16. 將結構對象寫入文件時,文件擴展名是否很重要?
- 17. 寫入文件時編碼是否重要?
- 18. 從Rails引擎重寫控制器時是否需要原始文件?
- 19. WCF/IIS超時是否需要重寫?
- 20. 寫入修改文件
- 21. Tomcat&Solr - 如果需要修改solrconfig.xml或其他conf文件,是否需要重新生成solr.war?
- 22. 寫入設備樹文本文件的順序是否重要?
- 23. 在寫入文件時需要幫助
- 24. 檢查文件是否已被修改
- 25. ANTLR:如何避免用戶修改文本時重新解析整個文件
- 26. Windows需要什麼來更新「文件修改」時間戳?
- 27. 是否需要配置hibernate.cfg.xml文件
- 28. Rails是否需要保留json.jbuilder文件
- 29. 這是否需要JAR文件?
- 30. 需要檢查文件是否存在?
那要看情況。你想如何修改文件? – 2012-07-26 04:52:27
那麼,對於我現在正在做的事情,我可能需要重寫整個文件,因爲我有一個搜索和替換例程,用於在整個文件中刪除字符。但是,我只是想知道是否可以修改文件的一部分而不用實際重寫整個文件。 – 2012-07-26 04:56:04
也取決於文件系統。 – 2012-07-26 04:56:41