FileIO.ReadTextAsync返回“Empty String”。编写xml文件时出错

时间:2014-10-04 16:20:36

标签: c# windows-8 windows-8.1 win-universal-app

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 ”。

我已经浏览过这些(post1post2)帖子并按照相同的步骤但仍然返回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

同样重要的是要注意,如果我使用断点检查每一行,一切都会好起来的。我可以保存大型列表并检索。但没有断点就无法控制。

2 个答案:

答案 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);
    }
}