2013-01-17 11 views
0

我正在開發一個智能設備應用程序在Windows Mobile 6.5與.NET CF 3.5使用C#。 用戶將使用此應用程序將xml文件寫入存儲卡,每天周圍有5000個xml文件要寫入存儲卡。但出現問題我無法找到根本原因,即有時寫入文件的大小爲零,也無法打開這些零大小的文件。如何避免使用C#在windows mobile 6.5設備中將零大小文件寫入存儲卡?

using (StreamWriter sw = System.IO.File.CreateText(@"\Storage Card\temp\filename01.xml")) 
{ 
    xmldocData.Save(sw); 
    sw.Flush(); 
    sw.Close(); 
} 

我將不勝感激,如果有人可以幫忙嗎?

回答

0

您試圖寫入的某些數據可能是空的嗎?

using (StreamWriter sw = System.IO.File.CreateText(@"\Storage Card\temp\filename01.xml")) 
{ 
    if (sw.BaseStream.Length > 0) 
    { 
     xmldocData.Save(sw); 
    } 
    sw.Flush(); 
    sw.Close(); 
} 

它有點難以分辨,你能夠顯示一些更多的代碼,你正在保存的數據?

+0

非常感謝! '\ Storage Card \ temp \ filename01.xml'是保存前不存在的文件名。所以sw.BaseStream.Length總是爲零。 xmldocData是momory中的XmlDocument對象,它包含一些xml元素,例如時間戳,設備ID,用戶ID,設置logdetail等 – user1985736

+0

XML數據示例:<?xml的版本= 「1.0」 編碼= 「UTF-8」?> 2012-01-01 12時37分26秒 XXXXXX X xxxx ??? user1985736

+0

是否有可能Windows移動存儲卡有IO緩衝區,這個問題是因爲緩衝區溢出?因爲當我將文件寫入存儲卡文件夾時,同時我也將一個副本寫入設備內部文件夾,但內部文件沒有零大小寫的情況。 如果是這樣,如何清除存儲卡IO緩衝區 – user1985736

0

可能是SD卡或驅動程序的問題。

請檢查SD卡。使用其他供應商的不同卡片進行測試。

不要在SD卡上保存和更改太多,它們不是作爲硬盤設計的。請參閱磨損平衡等。大多數消費卡都設計用於正常的日常使用,但不適用於工業用途。

有很多更好的工業用SD卡,例如ATP具有更好的耐磨度等,可以更頻繁地更改「內存」字節。

查看您設備的供應商並要求提供新的存儲卡驅動程序或設備固件或推薦的SD卡。

+0

非常感謝!約瑟夫。您的評論對我有幫助。 – user1985736

+0

我知道一個問題,其中保存代碼的線程優先級與嘗試更改並將其寫入SD卡的驅動程序代碼具有更高或相同的prio。結果是SD卡上的文件和FAT損壞。通常,驅動程序使用檢測到的空閒時間將數據寫回到SD卡。但是,如果沒有空閒時間呢? SD卡不同步。 – josef

相關問題