我想删除文件中的某行,如何做?文件很大.好像不太适合用TStringlist取出来再删除某行后,再存到文件.

解决方案 »

  1.   

    有N多人问过此类问题(每个开发语言版中都有)
    基于目前操作系统的结构,我建议的方法是:(如文件名为t.txt)
    1.将t.txt改名为t.bak
    2.建一新文件t.txt
    2.打开文件t.bak
    3.将t.bak逐行读入,将不要删除的行写入t.txt
    4.删除t.bak
      

  2.   

    好象有个seek函数可以定位的吧?
    这方面很少接触
      

  3.   

    目前的操作系统是顺序文件格式的,除了重写文件或我上面的copy法,别无它法
      

  4.   

    能多大啊!用stringlist应该比较快的,
    一行行的读,到指定行就为行的内容就为空,
    最后加的时候,为空的不加,不会很慢的!
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    var b,d:TStringList;i:Integer;s:String;
    begin
        if OpenDialog1.Execute then
        begin
            b:=TStringList.Create;
            d:=TStringList.Create;
            b.LoadFromFile(OpenDialog1.FileName);
            for i:=0 to b.Count-1 do
            begin
                s:=b.Strings[i];
                if i=2 then     //指定行
                s:='';
                if s<>'' then
                d.Add(s);
            end;
            d.SaveToFile(OpenDialog1.FileName+'1');
            b.Free;
            d.Free;
            ShowMessage('ok!');
        end;
    end;end.
      

  6.   

    回复人: keiy() ( ) 信誉:105  2005-12-30 12:01:00  得分: 0  
     
     
       有N多人问过此类问题(每个开发语言版中都有)
    基于目前操作系统的结构,我建议的方法是:(如文件名为t.txt)
    1.将t.txt改名为t.bak
    2.建一新文件t.txt
    2.打开文件t.bak
    3.将t.bak逐行读入,将不要删除的行写入t.txt
    4.删除t.bak
    ----------------------------------
    晕了
    有逐行读的功夫,直接lines.delete多好
      
     
      

  7.   

    lines.delete?没有这个对象和方法
      

  8.   

    lades and gentleman: 
       thanks
    搞定