如何删除文本文件的某一行?(100分)

  • 主题发起人 主题发起人 guangmin
  • 开始时间 开始时间
function delline(n : integer;filename:string):boolean;
var s : Tstrings;
begin
result := true;
s := Tstringlist.create;
try
s.loadfromfile(filename);
s.delete(n);
s.savetofile(filename);
except
result := false;
s.free
exit;
end;
s.free;
end;
 
要用java!11!
 
没有现成的函数。
Vector vec = new Vector();
BefferedReader() bf = new BufferedReader(new FileReader(filename));
String sTmp = bf.readLine();
int lineCounter = 0;
while (sTmp != null){
vec.addElement(sTmp);
sTmp = bf.readLine();
}
bf.close();
vec.removeElementAt(n);
PrintWriter() pw = new PrintWriter(new FileWriter(filename));
for(int i = 0;
i < vec.size();
i ++){
pw.println((String)vec.elementAt(i);
}
pw.flush();
pw.close();
 
感觉如果文件小的话,用第一位的方法简单、有效,如果比较大,则把第n行以外的都一行一行
地写进另一个文件中,再delete原来的文件,更改现在这个文件的name为原文件名。
浅见而已。
 
alum说的是对的,但是有一个概念是错的:
TStrings的行是从0开始的,所以要删除第N行,在TStringS中应该为N-1行,
应该为:
function delline(n : integer;filename:string):boolean;
var s : Tstrings;
begin

if (n>0) then
dec(n);//新加
result := true;
s := Tstringlist.create;
try
s.loadfromfile(filename);
s.delete(n);
s.savetofile(filename);
except
result := false;
s.free;
exit;
end;
s.free;
end;
 
alum说的是对的,但是有一个概念是错的:
TStrings的行是从0开始的,所以要删除第N行,在TStringS中应该为N-1行,
应该为:
function delline(n : integer;filename:string):boolean;
var s : Tstrings;
begin

if (n>0) then
dec(n);//新加
result := true;
s := Tstringlist.create;
try
s.loadfromfile(filename);
s.delete(n);
s.savetofile(filename);
except
result := false;
s.free;
exit;
end;
s.free;
end;
 
后退
顶部