现在有一个文件,是二进制的,我想从中读取出来放到另一个文件中,但是得到的结果文件中的内容和原文件中的内容不一样了,为什么呢? 请大家帮忙?
原代码:
private int read_from_file(string fileroot)
{

try
{
FileStream fs = new FileStream(fileroot,FileMode.Open,FileAccess.ReadWrite,System.IO.FileShare.Read,50,false);
BinaryReader sr = new BinaryReader(fs);

//while(true)
//{   
char[] buffer = new char[530];
//sr.ReadBlock(buffer,0,528);
   sr.Read(buffer,0,528);
     //把BUFFER中的数据转化成字符串
int len = buffer.Length;
string chartemp = "";
string linetemp = "";
//string temp;
for(int k = 0;k<len;k++)
{
chartemp = char.ToString(buffer[k]);
linetemp +=chartemp;
} if(linetemp[0]=='\0')
{
MessageBox.Show("文件中无数据");
sr.Close();
return -1;
}
temp512 = linetemp.Substring(0,512);
temp16 = linetemp.Substring(512,16);
MessageBox.Show(temp512,"haha");

//}

}
catch(Exception ee)
{
MessageBox.Show("读取文件错误:"+ee.Message,"错误!");
return -1;
} return 0;
} //写入TXT文件函数
private int write_to_file(string fileroot)
{
          
try
{
FileStream fs = new FileStream(fileroot,FileMode.Create,FileAccess.ReadWrite,System.IO.FileShare.Read,50,false);
BinaryWriter sw = new BinaryWriter(fs);
MessageBox.Show(temp512,"heihei");
//sw.Write(temp512);
sw.Write(temp512);
Console.WriteLine("now   write"+temp512);
sw.Close();
}
catch(Exception ee)
{
MessageBox.Show("保存文件错误:"+ee.Message,"错误!");
}
return 0;
}

解决方案 »

  1.   

    Use StreamReader and StreamWriter 
    not FileStream
      

  2.   

    读: StreamReader fs =new StreamReader(fileroot);
                      char[] buffer = new char[530];
                      fs.Read(buffer,0,528);
             //把BUFFER中的数据转化成字符串写:
    StreamWriter fs = new  StreamWriter(fileroot);  
                       fs.Write(temp512);结果还是一样的呀?  是不是我在把buffer 转化成字符串时出现问题了,望赐教!!!!
      

  3.   

    to  :viena(维也纳nn) 往文件里写的时候不支持buffer数组呀,我只好把它转化为字符串了,有别的做法吗?
      

  4.   

    FileStream.Write(buffer, offset, count)
    buffer
    所写入的字节数组
    offset 
    buffer中的字节偏移量,从此处开始写入 
    count
    最多写入的字节数
      

  5.   

    to :viena(维也纳nn)    我以前没用过C# ,我看写的参数都是STRING 类型的,如果写buffer 数组怎么写呀?           谢谢
      

  6.   

    并且也不应该读到char数组
    二进制文件未必能转为字符应用FileStream直接读到Byte字节数组
      

  7.   

    FileStream.Read 方法,参数与Write方法一样的
      

  8.   

    FileStream fs =new FileStream(fileroot,FileMode.Open,FileAccess.ReadWrite,System.IO.FileShare.Read,50,false);
    fs.Read(buffer,0,528);
    FileStream fs = new  FileStream(fileroot,FileMode.Create,FileAccess.ReadWrite,System.IO.FileShare.Read,50,false);
    fs.Write(buffer,0 ,512);怎么什么东西都没存进去呀?  是不是原文件的格式有问题??
      

  9.   

    调试下咯,监视下buffer的内容~
      

  10.   

    to: viena(维也纳nn)弄好了,谢谢,怎么给分,我还不会呢~!!!!嘿嘿