FileIO.ReadTextAsync
始终在Windows 8应用程序中返回空字符串(“”)。我正在开发Universal应用程序,需要注意的是,FileIO.ReadTextAsync
在Windows Phone应用程序中部署时返回字符串,但在Windows 8应用程序中返回空字符串?这是我的代码。
async Task<string> LoadStatus(String listFileName)
{
StorageFile localFile = await ApplicationData.Current.LocalFolder.GetFileAsync(listFileName);
string configData = await FileIO.ReadTextAsync(localFile);
return configData;
}
我将此功能称为,
string result = await LoadStatus(AppConstants.VeryHappyStatusListName);
listFileName是“ FileName.xml ”。
我已经浏览过这些(post1和post2)帖子并按照相同的步骤但仍然返回null?
还有一点需要注意,写入数据时会出错。有时它会完美地写入数据,有时我会在写作时遇到错误。
这是我的保存到存储方法。
async public void SaveStatus(List<Datum> list, String listFileName)
{
try
{
string localData = ObjectSerializer<List<Datum>>.ToXml(list);
if (!string.IsNullOrEmpty(localData))
{
StorageFile localFile = await ApplicationData.Current.LocalFolder.CreateFileAsync(listFileName, CreationCollisionOption.ReplaceExisting);
if (localFile != null)
{
//await Task.Delay(3000);
await FileIO.WriteTextAsync(localFile, localData);
}
}
}
catch (Exception ex)
{
DebugPrint(ex.Message.ToString());
DebugPrintLocation("SaveStaus", "SessionStorage");
}
}
关注此链接:https://code.msdn.microsoft.com/windowsapps/CSWinStoreAppSaveCollection-bed5d6e6
同样重要的是要注意,如果我使用断点检查每一行,一切都会好起来的。我可以保存大型列表并检索。但没有断点就无法控制。
答案 0 :(得分:0)
我在Windows 8应用程序中使用它,效果很好:
public async void ReadTextFile(string cFile)
{
var folder = KnownFolders.PicturesLibrary;
var file = await folder.GetFileAsync(cFile);
var read = await FileIO.ReadTextAsync(file);
CurrentFileBuffer = read;
}
答案 1 :(得分:0)
这应该适用于写作。当你发布一个问题时,解释你得到的错误也是一个好主意。
public async Task WriteDataToFileAsync(string fileName, string content)
{
byte[] data = System.Text.Encoding.Unicode.GetBytes(content);
var folder = KnownFolders.PicturesLibrary;
var file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
using (var s = await file.OpenStreamForWriteAsync())
{
await s.WriteAsync(data, 0, data.Length);
}
}