我的程序需要读一个比较大的文件(文本格式的),先要读文件头部分,然后需要读下面的数据记录部分。
我先读文件头部分,读完后返回文件流位置的long型值// 读取导航文件的头部分
private long ReadHdr(string NavFilePath)
{
StreamReader strm_reader = new StreamReader(NavFilePath); // 处理文件头信息
// ... //读完文件头后返回文件流的位置
long position = strm_reader.BaseStream.Position;
strm_reader.Close();
return position;
}
然后,我就开始用另一个函数来读文件头后面的数据(里面的数据都是重复的,所以才需要单独写一个函数):// 读取导航文件的记录节部分
private void ReadRec(string NavFilePath, long position)
{
StreamReader strm_reader = new StreamReader(NavFilePath); // 跳过文件头部分
strm_reader.BaseStream.Seek(position, SeekOrigin.Begin); string line_content
line_content = strm_reader.ReadLine();
}但是,最后发现,读取的位置错了,不是从文件头后面第一行开始的,我的程序错在哪儿了?各位帮忙分析下!先谢了!
我先读文件头部分,读完后返回文件流位置的long型值// 读取导航文件的头部分
private long ReadHdr(string NavFilePath)
{
StreamReader strm_reader = new StreamReader(NavFilePath); // 处理文件头信息
// ... //读完文件头后返回文件流的位置
long position = strm_reader.BaseStream.Position;
strm_reader.Close();
return position;
}
然后,我就开始用另一个函数来读文件头后面的数据(里面的数据都是重复的,所以才需要单独写一个函数):// 读取导航文件的记录节部分
private void ReadRec(string NavFilePath, long position)
{
StreamReader strm_reader = new StreamReader(NavFilePath); // 跳过文件头部分
strm_reader.BaseStream.Seek(position, SeekOrigin.Begin); string line_content
line_content = strm_reader.ReadLine();
}但是,最后发现,读取的位置错了,不是从文件头后面第一行开始的,我的程序错在哪儿了?各位帮忙分析下!先谢了!
readline 是按文本读取,
二者混用,容易出现错误
可以参考以下解决方法:http://www.cnblogs.com/chiname/articles/113157.html