2
我試圖創建並寫入UWP application.On首先執行該文件,它工作正常,在第二次它覆蓋第一內容和該文件只有從第二個執行中的內容。UWP在寫現有文件
Windows.Storage.StorageFolder Location = ApplicationData.Current.LocalFolder;
var lstfiles = await Location.GetFilesAsync(CommonFileQuery.OrderByName);
var foundfile = lstfiles.Where(x => x.Name==Test.dat").FirstOrDefault();
if (foundfile==null)
{
StorageFile fil = await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFileAsync("Test.dat");
//StorageFile file = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync("Test.dat");
using (IRandomAccessStream writeStream = await fil.OpenAsync(FileAccessMode.ReadWrite))
{
System.IO.Stream s = writeStream.AsStreamForWrite();
System.Xml.XmlWriterSettings settings = new System.Xml.XmlWriterSettings();
settings.Async = true;
using (System.Xml.XmlWriter writer = System.Xml.XmlWriter.Create(s, settings))
{
writer.WriteStartElement("Order");
writer.WriteElementString("OrderID", "y1");
writer.WriteElementString("OrderTotal", "y2");
writer.WriteElementString("Customer", "y3");
writer.WriteElementString("Phone", "y4");
writer.Flush();
await writer.FlushAsync();
}
}
}
else
{
StorageFile file = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync("Test.dat");
using (IRandomAccessStream writeStream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
System.IO.Stream s = writeStream.AsStreamForWrite();
System.Xml.XmlWriterSettings settings = new System.Xml.XmlWriterSettings();
settings.Async = true;
using (System.Xml.XmlWriter writer = System.Xml.XmlWriter.Create(s, settings))
{
writer.WriteStartElement("Order");
writer.WriteElementString("OrderID", "v51");
writer.WriteElementString("OrderTotal", "v2");
writer.WriteElementString("Customer", "v3");
writer.WriteElementString("Phone", "v4");
// await FileIO.AppendTextAsync(file, writer.ToString());
writer.Flush();
await writer.FlushAsync();
}
}
}
感謝ü陶它的工作原理菲英島 – Visnu
這是不使用XML進行一個很好的方法。你將會獲得一場表演。看來問題在於你真的只是想「追加」到已存在的文件。另外,請注意你在這裏複製代碼。我會得到一個處於狀態的流,以寫入新的或附加的數據,然後在if/else語句之後寫入數據。 – Thomas