在我的代码中,有一个XML文件,我用它来以不同的方法从中获取信息(变量(,但是当出现路灯问题(我无法控制的东西(使我的设备硬重启XML文件损坏时,我正在尝试这样做,但它**在此行中抛出异常
using (fsFileStream =
new FileStream( musicLibraryPath...
帮助将不胜感激。我将代码留在下面:
public async void fileExist(string fileName)
{
try
{
//Creates "file.xml".
StorageFile newBlankDocument =
await KnownFolders.MusicLibrary.CreateFileAsync(blankFile, CreationCollisionOption.FailIfExists);
}
catch (Exception)
{
}
try
{
//Creates "configFile.xml".
StorageFile newDocument =
await KnownFolders.MusicLibrary.CreateFileAsync(fileName, CreationCollisionOption.FailIfExists);
//Gets the file
StorageFile fileDocument =
await KnownFolders.MusicLibrary.GetFileAsync(fileName);
var musicLibrary = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Music);
String musicLibraryPath = musicLibrary.SaveFolder.Path;
using (fsFileStream =
new FileStream( musicLibraryPath, FileMode.CreateNew, FileAccess.Write, FileShare.None, 1024, FileOptions.WriteThrough))
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.OmitXmlDeclaration = false;
using (XmlWriter writer = XmlWriter.Create(fsFileStream, settings))
{
//Create all the XML document fields.
writer.WriteStartDocument();
writer.WriteStartElement("Config");
writer.WriteStartElement("General");
writer.WriteAttributeString("name", "DATA");
writer.WriteStartElement("Local");
writer.WriteElementString("something1", "");
writer.WriteElementString("something2", "");
writer.WriteElementString("something3", "");
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Flush();
writer.Dispose();
showReferenceWarning();
timerReferenceWarning.Start();
}
}
}
catch (Exception)
{
//The file already exists and doesn't need to be created again.
}
}
但它在此行中抛出一个异常" 使用 (fsFileStream = new FileStream( musicLibraryPath...">
Windows 应用商店应用以沙盒方式运行,对文件系统的访问权限非常有限。在大多数情况下,他们只能直接访问其安装文件夹和应用程序数据文件夹。不能直接使用该Path
。如果要将数据写入 xml 文件,可以await fileDocument.OpenAsync(FileAccessMode.ReadWrite)
.
public async void fileExist(string fileName)
{
try
{
//Creates "file.xml".
StorageFile newBlankDocument = await KnownFolders.MusicLibrary.CreateFileAsync("file.xml", CreationCollisionOption.FailIfExists);
}
catch (Exception)
{
}
try
{
//Creates "configFile.xml".
StorageFile newDocument = await KnownFolders.MusicLibrary.CreateFileAsync(fileName, CreationCollisionOption.FailIfExists);
//Gets the file
StorageFile fileDocument = await KnownFolders.MusicLibrary.GetFileAsync(fileName);
await Task.Run(async () =>
{
using (var fsFileStream = await fileDocument.OpenAsync(FileAccessMode.ReadWrite))
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.OmitXmlDeclaration = false;
using (XmlWriter writer = XmlWriter.Create(fsFileStream.AsStreamForWrite(), settings))
{
//Create all the XML document fields.
writer.WriteStartDocument();
writer.WriteStartElement("Config");
writer.WriteStartElement("General");
writer.WriteAttributeString("name", "DATA");
writer.WriteStartElement("Local");
writer.WriteElementString("something1", "");
writer.WriteElementString("something2", "");
writer.WriteElementString("something3", "");
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Flush();
writer.Dispose();
}
}
});
}
catch (Exception ex)
{
//The file already exist and doesn´t need to be created again.
}
}
请注意,如果您使用过音乐库,则需要在应用清单中声明功能。有关更多信息,您可以参考功能。