编写一个程序,从一个文本文件中删除所有出现某个指定字符串的地方。例如,调用Java Exercise9_21 John filename 从指定文件中删除字符串John
file已经创建了,但是John消不掉。。
所以哪里出错了?
当PrintWriter output=new PrintWriter(file);
的时候,假如文件存在会清空。。。。所以你什么都读不到。。追问
😨可是他要求的就是同一个文件里的删除操作,应该怎么改?
追答那你就先读出来,将结果存进StringBuilder里面,然后再全部写进原来的文件里就好了
追问(๑• . •๑)可以给一下代码吗?谢谢!!
追答import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
public class Main {
public static void main(String[]args) throws FileNotFoundException{
File file=new File("1.txt");
Scanner stdin=new Scanner(file);
StringBuilder sb=new StringBuilder();
while(stdin.hasNext()){
String line=stdin.nextLine();
sb.append(line.replaceAll("join", "")+"\r\n");
}
stdin.close();
PrintWriter pw=new PrintWriter(file);
pw.println(sb.toString());
pw.close();
}
}
简单的写了下,,思路就是这样的。。。
虽然看不懂,但还是谢谢!
追答额,,,因为你不能读的时候写啊,,防止覆盖掉原来的文件,,所以你写把数据读出来处理完,存在一个集合类中,,,,等处理完后,,,在重新写入文件中就好了。。。。大体就这个意思
追问╭(°A°`)╮就是新建一个集合那里看不太懂
那个stdin我们没有学😰
而且我跑了你的程序,不行
追答额,刚吃饭去了。。。报的啥错误。。我这可以啊。。。。。。是不是找不到文件。。。
那就新建个数组,,,,,只是用来存生成的字符串的而已。。。。。。
stdin是Scanner啊。。。你上边不是也用了吗。。。
(๑• . •๑)是文本内容没有发生改变
追答额。。你是不是用的1.txt File啊。。。。。。你打印下中间结果。。。。。
追问不是,我用的是file,但是也不行,文本内容没有发生改变
追答额。。你代码给我发下。。。。。。。。
追问好的,迟一点发给你
file1里面的内容就是Java Exercise9_21 John filename
正确程序已写出
追答额,,写好就好了......明天寝室有同学就去实习了,今晚同学聚会去了.....回来的有点晚了.没看.......不过写好就好了.....
public static void main(String[] args)throws Exception{
java.io.File file=new java.io.File("file1.txt");
if(file.exists()) {
System.out.println("File already exists");
}
Scanner input=new Scanner(file);
StringBuilder string =new StringBuilder();
while(input.hasNext()){
String s=input.nextLine();
string.append(s.replaceAll("John"," ") + "\r\n");
}
input.close();
PrintWriter output=new PrintWriter(file);
output.println(string.toString());
output.close();
}
}