现在有一个文件,是二进制的,我想从中读取出来放到另一个文件中,但是得到的结果文件中的内容和原文件中的内容不一样了,为什么呢? 请大家帮忙?
原代码:
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;
}
原代码:
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;
}
not FileStream
char[] buffer = new char[530];
fs.Read(buffer,0,528);
//把BUFFER中的数据转化成字符串写:
StreamWriter fs = new StreamWriter(fileroot);
fs.Write(temp512);结果还是一样的呀? 是不是我在把buffer 转化成字符串时出现问题了,望赐教!!!!
buffer
所写入的字节数组
offset
buffer中的字节偏移量,从此处开始写入
count
最多写入的字节数
二进制文件未必能转为字符应用FileStream直接读到Byte字节数组
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);怎么什么东西都没存进去呀? 是不是原文件的格式有问题??