我正在尝试使用以下代码将一串文本写入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;
}
}
答案 0 :(得分:2)
这可能是编码问题。阅读文件时,请尝试指定用于编写文件的相同编码:
using (var streamReader = new StreamReader(file, Encoding.Unicode))
说明:该文件以Unicode编写,但读为UTF-8(因为没有字节顺序标记)。额外的NUL字符会导致文本框截断第一个字符后的文本。