代码片断:                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
就不同了,主要表现为长度不同。由于对这个地方从原理上不是很熟悉,所以还是不能理解为什么会出现这个问题。

解决方案 »

  1.   

    曾经遇到过
    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);
    }