文件编码导致 打开和写入的问题
代码片断:
FileStream myStream = (FileStream) ofdAttachFile.OpenFile();
if (myStream != null)
{
byte[] bFile = new byte[myStream.Length];
myStream.Read(bFile, 0, (int)myStream.Length);
UnicodeEncoding ue = new UnicodeEncoding();
string fileContent= ue.GetString(bFile);
byte[] bFile2 = ue.GetBytes(fileContent);
}
我从一个文件中读取数据到byte[] bFile,然后转化成string fileContent,但是
fileContent再反过来转化成byte[] bFile2 的时候,两个byte[] 变量bFile,bFile2
就不同了,主要表现为长度不同。
由于对这个地方从原理上不是很熟悉,所以还是不能理解为什么会出现这个问题。
------解决方案--------------------先看看内容对不对,然后长度差多少?
------解决方案--------------------线索是要自己发现的,你用十六进制编辑器对比一下就可以了。
------解决方案--------------------可能是编码问题。
------解决方案--------------------曾经遇到过
FileStream myStream = (FileStream) ofdAttachFile.OpenFile();
if (myStream != null)
{
byte[] bFile = new byte[myStream.Length];
//
//上一行开辟的数组,大于文件的长度
//可能是:如果流长度=n,则数组长度==((int)(n/256 + 1)) * 256
//我将文件读到串,再将其写到文件,发现文件的尾部多了一些空格
//
myStream.Read(bFile, 0, (int)myStream.Length);
UnicodeEncoding ue = new UnicodeEncoding();
string fileContent= ue.GetString(bFile);
byte[] bFile2 = ue.GetBytes(fileContent);
}