輸入輸出流操作同乙個檔案的問題及解決辦法

2022-08-17 09:36:09 字數 1290 閱讀 4460

【我的segmentfault原文】

由於需要對文字檔案的部分內容進行更新操作,具體操作是需要先將文字檔案內容讀取出來,暫以字串形式儲存,然後進行匹配替換,並將字串重新寫入原文字檔案中。

規劃使用bufferedreader進行讀取,使用printwriter進行寫入操作

bufferedreader br = null;

printwriter pw = null;

stringbuilder sqlmapconf = new stringbuilder();

try

str = sqlmapconf.tostring().replacefirst("\\*sqlmap對映檔案\\*", config);

pw.write(str);

system.out.println(str);

} catch (filenotfoundexception e) catch (ioexception e) catch (exception e) finally

if (br!=null) catch (ioexception e)

}}

測試時發現,原文字檔案內容會被清空,且未有內容寫入,也無異常報錯資訊

通過分析推測,輸入流未關閉的情況下,輸出流操作同一路徑檔案,會造成衝突,輸入流會認為該檔案不存在並重新建立同名檔案覆蓋原檔案,而後輸入流實際讀取的是乙個空檔案,那麼輸出流寫入的內容也為空,最後造成檔案內容置空的現象。

在輸入流操作完該檔案後,輸出流再進行檔案操作,**糾正如下:

bufferedreader br = null;

printwriter pw = null;

stringbuilder sqlmapconf = new stringbuilder();

try

str = sqlmapconf.tostring().replacefirst("\\*sqlmap對映檔案\\*", config);

pw = new printwriter(sqlmapconffile,"utf-8");//糾正增加的**

pw.write(str);

system.out.println(str);

} catch (filenotfoundexception e) catch (ioexception e) catch (exception e) finally

if (br!=null) catch (ioexception e)

}}

C 流 檔案操作(輸入輸出流)

到目前為止,我們已經使用了iostream標準庫,它提供了cin和cout方法分別用於從標準輸入讀取流和向標準輸出寫入流。本教程介紹如何從檔案讀取流和向檔案寫入流。這就需要用到 c 中另乙個標準庫fstream,它定義了三個新的資料型別 資料型別 描述ofstream 該資料型別表示輸出檔案流,用於...

讀寫同乙個檔案出問題

在c primer plus 第六版中的第十三章程式設計練習第3題出現了問題。題目 編寫乙個檔案拷貝程式,提示使用者輸入文字檔案名,並以該檔名作為源檔名和輸出檔名。該程式要使用ctype.h中的toupper 函式,在寫入到輸出檔案時把所有文字轉換成大寫。使用標準的i o和文字模式。我一開始就只建立...

檔案流的簡單輸入輸出

檔案流的簡單輸入輸出 也只有最簡單的用法。要實現檔案流,首先要有標頭檔案fstream 輸出流 將電腦的東西輸出到資料夾裡,或者叫寫到資料夾裡。基本格式 第一種ofstream out f file.txt 開啟f盤下的file.txt檔案,開啟寫功能。out 123456 往資料夾寫入123456...