Java-读取时通过覆盖从文本文件中删除行
|
我正在尝试从文本文件中删除一行文本,而不复制到一个临时文件中。我正在尝试通过使用Printwriter和Scanner并让它们同时遍历文件来做到这一点,writer写Scanner读取的内容并用相同的东西覆盖每一行,直到到达我希望的行为止。删除。然后,我前进扫描仪而不是写程序,然后像以前一样继续。这是代码:
但首先要使用参数:我的文件名是数字,因此它将显示为1.txt或2.txt等,因此f指定了文件名。我将其转换为文件的构造函数中的String。 Int n是我要删除的行的索引。
public void deleteLine(int f, int n){
try{
Scanner reader = new Scanner(new File(f+\".txt\"));
PrintWriter writer = new PrintWriter(new FileWriter(new File(f+\".txt\")),false);
for(int w=0; w<n; w++)
writer.write(reader.nextLine());
reader.nextLine();
while(reader.hasNextLine())
writer.write(reader.nextLine());
} catch(Exception e){
System.err.println(\"Enjoy the stack trace!\");
e.printStackTrace();
}
}
它给了我奇怪的错误。它在堆栈跟踪中显示\“ NoSuchElementException \”和\“找不到行\”。它指向不同的线;似乎任何nextLine()调用都可以做到这一点。是否可以通过这种方式删除行?如果是这样,我在做什么错?如果没有,为什么? (顺便说一句,以防万一,如果想要的话,文本文件大约有500行。我不知道那是不是很大,甚至很重要。)
没有找到相关结果
已邀请:
3 个回复
董碘奴星
(请注意对编码,换行符和异常处理的草率处理。) 但是,我不喜欢用“我不会告诉你怎么做,因为你还是不应该这样做。”来回答问题。 (例如,在某些其他情况下,您可能正在使用一个大于硬盘一半的文件!) 您需要改用
。使用此类,您可以使用同一对象读取和写入文件:
炉挤仙挟
绵扇寸访