題主打算在不改變原有文件的情況下,將相對于文件開頭offset偏移量后的內容替換為buffer緩沖區(qū)的內容,代碼如下:
StreamWriter writer = new StreamWriter("file", true); //設置指針位置 writer.BaseStream.Seek(offset, SeekOrigin.Begin); //將buffer內的數(shù)據(jù)寫進文件 writer.Write(buffer); //關閉流 writer.Close();
當執(zhí)行到第二句將指針指向要修改的位置時,引發(fā)了IOException
異常,異常信息為無法通過向后搜索來覆蓋以追加模式打開的文件中的原有數(shù)據(jù)
,但如果以“覆蓋”的方式打開下,文件原有內容會在StreamWriter
對象被創(chuàng)建后抹去。請問在不使用把整個文件讀取進緩沖區(qū)并在緩沖區(qū)修改數(shù)據(jù)后將整個緩沖區(qū)覆蓋進文件的方法的情況下,如何對文件的某一部分進行直接的修改呢?