C#中度曲文件的问题
现在有一个文件,是二进制的,我想从中读取出来放到另一个文件中,但是得到的结果文件中的内容和原文件中的内容不一样了,为什么呢? 请大家帮忙?
原代码:
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;
}
问题点数:20、回复次数:14Top
1 楼net_lover(【孟子E章】)回复于 2006-11-01 08:39:24 得分 0
Use StreamReader and StreamWriter
not FileStreamTop
2 楼viena(维也纳N02)回复于 2006-11-01 08:48:59 得分 0
转化成字符串什么意思?不是二进制文件吗?Top
3 楼quziao()回复于 2006-11-01 08:51:24 得分 0
读: 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 转化成字符串时出现问题了,望赐教!!!! Top
4 楼quziao()回复于 2006-11-01 08:52:58 得分 0
to :viena(维也纳nn)
往文件里写的时候不支持buffer数组呀,我只好把它转化为字符串了,有别的做法吗?
Top
5 楼quziao()回复于 2006-11-01 08:59:09 得分 0
很着急呀,各位高手过来帮忙看看,等着用呢!!!!!!!!!!呵呵Top
6 楼viena(维也纳N02)回复于 2006-11-01 09:00:02 得分 0
谁说不支持buffer数组?Top
7 楼viena(维也纳N02)回复于 2006-11-01 09:04:37 得分 0
FileStream.Write(buffer, offset, count)
buffer
所写入的字节数组
offset
buffer中的字节偏移量,从此处开始写入
count
最多写入的字节数Top
8 楼quziao()回复于 2006-11-01 09:04:57 得分 0
to :viena(维也纳nn)
我以前没用过C# ,我看写的参数都是STRING 类型的,如果写buffer 数组怎么写呀? 谢谢Top
9 楼viena(维也纳N02)回复于 2006-11-01 09:06:49 得分 0
并且也不应该读到char数组
二进制文件未必能转为字符
应用FileStream直接读到Byte字节数组Top
10 楼viena(维也纳N02)回复于 2006-11-01 09:09:59 得分 0
FileStream.Read 方法,参数与Write方法一样的Top
11 楼quziao()回复于 2006-11-01 09:12:02 得分 0
看到了,我试试,先谢谢
一会见Top
12 楼quziao()回复于 2006-11-01 09:15:40 得分 0
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);
怎么什么东西都没存进去呀? 是不是原文件的格式有问题??
Top
13 楼viena(维也纳N02)回复于 2006-11-01 09:23:53 得分 20
调试下咯,监视下buffer的内容~Top
14 楼quziao()回复于 2006-11-01 09:28:40 得分 0
to: viena(维也纳nn)
弄好了,谢谢,怎么给分,我还不会呢~!!!!嘿嘿Top




