首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

文件编码导致 打开和写入的有关问题

2012-04-10 
文件编码导致 打开和写入的问题代码片断:FileStreammyStream(FileStream)ofdAttachFile.OpenFile()if(my

文件编码导致 打开和写入的问题
代码片断:

                                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);
}

热点排行