如果有人能帮我解决这个问题,我会很高兴的。我有一个文件,里面有一些我不确定的数据,但我猜数据格式是UFT8,我在C#中读取它,没有任何更改,将它写回文件中,但随后文件中的数据被损坏。
以下是我使用UTF8编码从NotePad++输出的文件:
然后我读取它,没有任何变化,将它写回文件中,但当我在NotePad++中重新打开它时,我看到了以下输出:
下面是我用C#编写的读写代码:
private void btnRead_Click(object sender, RoutedEventArgs e)
{
var fs = new FileStream(path + name, FileMode.Open, FileAccess.Read);
var br = new BinaryReader(fs);
buffer = br.ReadBytes((int)fs.Length);
MyTextBox.Text = Encoding.UTF8.GetString(buffer);
}
private void btnWrite_Click(object sender, RoutedEventArgs e)
{
var bw = new BinaryWriter(new FileStream(path + name + ".modified", FileMode.Create));
bw.Write(BytesToString(buffer));
bw.Close();
}
static string BytesToString(byte[] bytes)
{
using (MemoryStream stream = new MemoryStream(bytes))
{
using (StreamReader streamReader = new StreamReader(stream))
{
return streamReader.ReadToEnd();
}
}
}
发布于 2020-04-20 11:09:53
所以我找到了我的问题所在。事实上,我正在以二进制格式读取文件,但当我写回它时,我将二进制文件转换为字符串,这导致了问题。因此,如果我只使用下面的代码,一切都会正常工作,因为在编写期间,它不会将二进制文件转换为字符串:
private void btnWrite_Click(object sender, RoutedEventArgs e){
var bw = new BinaryWriter(new FileStream(path + name + ".modified", FileMode.Create));
bw.Write(buffer);}
发布于 2020-04-17 19:23:18
https://stackoverflow.com/questions/61278386
复制相似问题