2
UWP 응용 프로그램에서 파일을 작성하고 쓰려고했습니다. 처음 실행해도 괜찮습니다. 두 번째로는 첫 번째 내용을 덮어 쓰고 파일에는 두 번째 실행 내용 만 덮어 씁니다. 새 노드에 관계없이 성능 저하를 추가 할 수있는 전에 전체 XML을 읽을 수 있어야하지만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();
}
}
}
감사합니다. tao fyn을 작동합니다. – Visnu
이것은 xml을 사용하는 좋은 방법이 아닙니다. 실적이 좋을 것입니다. 문제는 이미 존재하는 파일에 단순히 "추가"하고 싶다는 것입니다. 또한 여기에 코드를 복사하고 있습니다. 나는 상태에서 스트림을 새로 작성하거나 추가 한 다음 if/else 문 다음에 데이터를 작성합니다. – Thomas