C# 覆盖wp8中的现有文件
我正在制作一个应用程序,我想在其中覆盖我的文件,就像我在文件中写入一个数字并读取,但下次我想将新数字添加到现有文件中时,请读取它 对于写入文件,我使用的是代码C# 覆盖wp8中的现有文件,c#,windows-phone-7,windows-phone-8,C#,Windows Phone 7,Windows Phone 8,我正在制作一个应用程序,我想在其中覆盖我的文件,就像我在文件中写入一个数字并读取,但下次我想将新数字添加到现有文件中时,请读取它 对于写入文件,我使用的是代码 private async void cross_Click(object sender, RoutedEventArgs e) { byte[] fileBytes = System.Text.Encoding.UTF8.GetBytes(this.ScoreTB.Text.ToCharArray()); Stor
private async void cross_Click(object sender, RoutedEventArgs e)
{
byte[] fileBytes = System.Text.Encoding.UTF8.GetBytes(this.ScoreTB.Text.ToCharArray());
StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;
var dataFolder = await local.CreateFolderAsync("MyFolder", CreationCollisionOption.OpenIfExists);
var file = await dataFolder.CreateFileAsync("MyFile.txt", CreationCollisionOption.ReplaceExisting);
using (var s = await file.OpenStreamForWriteAsync())
{
s.Write(fileBytes, 0, fileBytes.Length);
}
}
用于读取文件
private async void aboutus_Click(object sender, RoutedEventArgs e)
{
StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;
if (local != null)
{
// Get the DataFolder folder.
var dataFolder = await local.GetFolderAsync("MyFolder");
// Get the file.
var file = await dataFolder.OpenStreamForReadAsync("MyFile.txt");
// Read the data.
using (StreamReader streamReader = new StreamReader(file))
{
this.Score.Text = streamReader.ReadToEnd();
}
}
else
{
MessageBox.Show("No File Created");
}
}
请帮助我如何在windows phone应用程序开发中覆盖现有文件
提前感谢据我所知,您不需要覆盖,只需要附加 1) 将
ReplaceExisting
更改为OpenIfExists
:
var file = await dataFolder.CreateFileAsync("MyFile.txt", CreationCollisionOption.OpenIfExists );
2) 在写入之前查找到流的末尾:
using (var s = await file.OpenStreamForWriteAsync())
{
s.Seek(0, SeekOrigin.End );
s.Write(fileBytes, 0, fileBytes.Length);
}
您当前的代码有什么问题?看起来它已经完成了任务,
CreationCollisionOption.ReplaceExisting
将覆盖现有文件,不是吗?看,我正在制作一个小游戏,每次都会出现一个数字,假设第1次出现80,我现在可以在文件中写入,下次出现20,所以我希望该文件应为80+20,当我读取该文件时,应给出结果100。但是通过这段代码,我得到了20,它被覆盖了,但是我希望它应该添加到前面的数字中。为什么不使用IsolatedStorageSettings[link]()?它只是一个字典,你可以在那里保存密钥和值OK,这就澄清了问题。这听起来更像是附加到现有文件,而不是覆盖。试试@crea7or-answer,看起来很有希望(我自己还没试过)。