Windows Phone只保存字符串的一个字符

本文关键字:一个 字符 Phone 保存 字符串 Windows | 更新日期: 2023-09-27 18:28:16

我正在尝试使用以下代码将字符串文本写入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;
    }
}

Windows Phone只保存字符串的一个字符

这可能是一个编码问题。读取文件时,请尝试指定与写入文件时相同的编码:

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

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