使用檔案流寫Xml檔案時得到的乙個小經驗

2021-06-06 19:26:42 字數 1088 閱讀 1099

假設乙個寫入xml檔案的上下文情景

//打算將這個dataset物件的內容寫入xml檔案中

dataset dataset = new dataset("example");

//首先以檔案流的形式開啟xml檔案

filestream fs = file.open(filename, filemode.openorcreate);

//而後將dataset的內容寫入該檔案流

dataset.writexml(fs, xmlwritemode.writeschema);

//寫入快取,關閉檔案

fs.close();

如上**在執行多次後很可能會出現異常,異常資訊為「根級別上的資料無效。」

這是由於多次執行過程中,若上次寫入的字串長度為100,那麼本次開啟的檔案流包含100個字元,而這次寫入的字串長度為90,那麼writexml方法會用這90個字元覆蓋檔案流中的前90個字元,而倒數10個字元卻未被覆蓋,依然保留著,成為乙個「小尾巴」。

如第一次寫入的內容是:

this is not a example

想在第二次寫入的內容是:

this is a example

那麼第二次寫入後,內容可能會變成

this is a example

ple>

注意最後一行留下的「尾巴」——ple>

為了解決這個問題,在每次寫入之前用setlength()方法清空開啟的檔案流即可,如下所示:

//打算將這個dataset物件的內容寫入xml檔案中

dataset dataset = new dataset("example");

//首先以檔案流的形式開啟xml檔案

filestream fs = file.open(filename, filemode.openorcreate);

//將檔案流長度設為0,即可清空其中的內容

fs.setlength(0);

//而後將dataset的內容寫入該檔案流

dataset.writexml(fs, xmlwritemode.writeschema);

//寫入快取,關閉檔案

fs.close();

寫xml檔案時標頭檔案的編碼

當我們寫乙個xml檔案時會設定內容的xml編碼,但是生成之後開啟來看,生成的xml標頭檔案編碼竟然還是沒有發生改變 那麼怎麼把它變成呢 document document documenthelper.createdocument document.setxmlencoding gbk 這個我們大家...

python 寫xml檔案的操作

要生成的xml檔案格式如下 sample xml thing ma xiaoju springs widgets,inc.first i think widgets are greate.you should buy lots of them forom spirngy widgts,inc fro...

FileWriter檔案檔案字元輸出流寫入儲存資料

其中,流關閉之後再呼叫會報ioexception 其中,與檔案字元輸入流 寫出 讀取資料 和 位元組輸出流 寫入 儲存資料 不同的是,要先flush 方法,將記憶體緩衝區的資料重新整理到硬碟檔案中 close 方法會自動呼叫flush 方法將記憶體緩衝區的資料重新整理到硬碟檔案中 執行結果 e.tx...