2008-12-30 73 views
1

我想在.Net應用程序中使用NVelocity模板:使用模板將結果輸出到文件。除了輸出從未被完全覆蓋的事實外,它似乎一切正常。如果我的文件長度爲100個字符,並且模板只顯示20個字符,則最後的80個字符永遠不會更改!用Velocity/NVelocity完全覆蓋文件

代碼示例:

 FileStream fileStream = new FileStream(outputPath, FileMode.OpenOrCreate, FileAccess.Write); 

     using (StreamWriter streamWriter = new StreamWriter(fileStream)) 
     { 
      velocityEngine.MergeTemplate(templateName, Encoding.Default.WebName, velocityContext, streamWriter); 
     } 

所以,如果我的模板輸出AAAA和文件已經包含BBBBBBBB然後在最後,該文件包含AAAABBBB在運算結束。

任何線索我如何才能完全覆蓋文件? - 例如在上面的例子中,最終輸出應該是AAAA。不太確定這是否只是純粹的流相關的東西 - 但我以前沒有遇到這個問題與文件流。

很高興寫一個重置方法,或者只是輸出到一個內存流並覆蓋文件,但我想盡可能讓它像這樣工作! **編輯:''通過致電

fileStream.SetLength(0); 

當我打開文件。但願意知道是否有更好的方法!

回答

2

我認爲解決的辦法是改變FileMode.OpenOrCreate簡單FileMode.Create在第一線

從上System.IO.FileMode MSDN文章..

FileMode.Create 指定操作系統應該創建一個新文件。如果文件已經存在,它將被覆蓋。

FileMode.OpenOrCreate 指定如果文件存在,操作系統應該打開文件;否則,應該創建一個新文件。