Java 如何在文本文件中保留一些字符串?

Java 如何在文本文件中保留一些字符串?,java,file,text,Java,File,Text,我有一个文本文件,其格式如下: ab cd ef gh ij .. ab cd ef 我想删除“ef”之后的字符串,我的意思是在运行我的程序后,文本文件结构如下: ab cd ef gh ij .. ab cd ef 我正在使用netbeans IDE和java代码。有人能帮忙吗? 这是我尝试过的代码,但它只是在字符串中保留“ef”之前的字符串,但我不知道如何执行其他操作 BufferedReader br = new BufferedReader(new FileReader("E

我有一个文本文件,其格式如下:

ab
cd
ef
gh
ij
..
ab
cd 
ef
我想删除“ef”之后的字符串,我的意思是在运行我的程序后,文本文件结构如下:

ab
cd
ef
gh
ij
..
ab
cd 
ef
我正在使用netbeans IDE和java代码。有人能帮忙吗? 这是我尝试过的代码,但它只是在字符串中保留“ef”之前的字符串,但我不知道如何执行其他操作

BufferedReader br = new BufferedReader(new FileReader("E:\\info.txt"));
try {
    StringBuilder sb = new StringBuilder();
    String line = br.readLine();

    while (!(line.equals("ef"))) {
        sb.append(line);
       // sb.append(System.lineSeparator());
        line = br.readLine();
    }
    String everything = sb.toString();
    System.out.print(everything);
   // System.out.print(sb);
} finally {
    br.close();
}

下面是一个更正文件的示例

final String fileName = "E:\\info.txt";
String everything = "";

try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
  StringBuilder sb = new StringBuilder();
  String line = br.readLine();

  while (!(line.equals("ef"))) {
    sb.append(line).append("\n");
    // sb.append(System.lineSeparator());
    line = br.readLine();
  }

  sb.append(line);
  everything = sb.toString();
  System.out.print(everything);
}

final File file = new File(fileName);
file.delete();

try (FileWriter writer = new FileWriter(fileName)) {
  writer.write(everything);
}

您可以在以下示例中使用Apache commons io:

private final String FILE_NAME = "E:\\info.txt";

public void test() throws IOException {
    File file = new File(FILE_NAME);
    List<String> strings = FileUtils.readLines(file);
    int ef = strings.indexOf("ef");
    List<String> stringBeforeEF = strings.subList(0, ef);
    FileUtils.writeLines(file, stringBeforeEF);
}
private final String FILE_NAME=“E:\\info.txt”;
public void test()引发IOException{
文件=新文件(文件名);
List strings=FileUtils.readLines(文件);
int ef=strings.indexOf(“ef”);
List stringBeforeEF=strings.subList(0,ef);
writeLines(文件,stringBeforeEF);
}

您的试用代码在哪里?我添加了我的代码,但根本不完整@RamanlfcWell现在,您在所有线路上循环,直到到达“ef”,然后停止。所以,难怪你会得到这样的输出。但是我的代码并没有改变我的文件,我希望文本文件按照我说的格式更正@弗洛里安