c++读写文件有时数据量比较大的情况下,ifstream.good()会失败,因此,在数据量比较大的情况下,iostream就不适用。于是,考虑用c#来操作文件读写,下面是个例子程序:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace ReadFile
{
class Program
{
static void Main(string[] args)
{
FileStream ifs = new FileStream("export.sql",FileMode.Open);
FileStream ofs = new FileStream("other.sql",FileMode.Open);
FileStream ofs_pybknm = new FileStream("pybknm.sql", FileMode.Open);
StreamReader sr = new StreamReader(ifs, System.Text.Encoding.Default);
StreamWriter sw = new StreamWriter(ofs, System.Text.Encoding.UTF8);
StreamWriter sw_pybknm = new StreamWriter(ofs_pybknm, System.Text.Encoding.UTF8);
sr.BaseStream.Seek(0, SeekOrigin.Begin);
String strLine=null;
int cnt = 0;
int[] a = new int[1000000];
int i = 0;
while ((strLine = sr.ReadLine()) != null)
{
cnt++;
if (strLine.Contains("pybknm"))
{
//第155926-271446行是pybknm表的数据
sw_pybknm.WriteLine(strLine);
}
else
sw.WriteLine(strLine);
if (strLine.Contains("yltran_yecx"))
a[i++] = cnt;
strLine = null;
}
Console.WriteLine("i=" + i);
Console.WriteLine(a[0]);
for (int j = 0; j < i - 1; j++)
{
if (a[j] + 1 != a[j + 1])
{
Console.WriteLine(a[j]);
Console.WriteLine(a[j + 1]);
}
}
if(i>=1)
Console.WriteLine(a[i - 1]);
Console.Write(cnt);
Console.ReadLine();
}
}
}