仅限Windows Phone保存字符串的一个字符

时间:2014-10-29 19:33:21

标签: c# windows-phone-8.1

我正在尝试使用以下代码将一串文本写入Windows Phone 8.1中的文件:

public async Task WriteDataToFileAsync(String fileName, String content)
{
    Byte[] data = Encoding.Unicode.GetBytes(content);

    var folder = ApplicationData.Current.LocalFolder;
    var file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);

    using (var s = await file.OpenStreamForWriteAsync())
    {
        await s.WriteAsync(data, 0, data.Length);
    }
}

但是,它只写了我要写的任何文字的第一个字符。我做错了什么!?

编辑:这是我读它的方式:

public async Task<String> ReadFileContentsAsync(String fileName)
{
    var folder = ApplicationData.Current.LocalFolder;
    try
    {
        var file = await folder.OpenStreamForReadAsync(fileName);
        using (var streamReader = new StreamReader(file))
        {
            return streamReader.ReadToEnd();
        }
    }
    catch (Exception)
    {
        return String.Empty;
    }
}

1 个答案:

答案 0 :(得分:2)

这可能是编码问题。阅读文件时,请尝试指定用于编写文件的相同编码:

using (var streamReader = new StreamReader(file, Encoding.Unicode))

说明:该文件以Unicode编写,但读为UTF-8(因为没有字节顺序标记)。额外的NUL字符会导致文本框截断第一个字符后的文本。