如何删除txt文件中的bufferedreader行

时间:2017-08-16 17:52:44

标签: java lines

如果我有一个txt文件,如:

      aaaa
      bbbb
      cccc

我不知道文本是什么,但我想删除第2行,它将是:

      aaaa
      cccc

我该怎么做

2 个答案:

答案 0 :(得分:1)

不幸的是,你不能以一种简单的方式做到这一点......你需要使用java.io.InputStream来读取数据,使用java.io.OutputStream来将数据写入文件。因此,从现有文件中“删除”一行的唯一方法是读取原始文件并编写一个没有该行的新文件。我知道这很奇怪,但好处是你可以在不加载内存中的整个文件内容的情况下将其全部流式传输。这是一个样本。

import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;

public class FileStream {

    public static void main(String ...args){

        try(
            //Creates a print writer for new file, will truncate existing with same name
            PrintWriter pw = new PrintWriter(
                    Files.newOutputStream(Paths.get("out.txt"), 
                            StandardOpenOption.CREATE, 
                            StandardOpenOption.TRUNCATE_EXISTING))
        ) 
        {
            //Stream in each line of existing file
            Files.lines(Paths.get("in.txt"))
            //Filter out the lines you don't want
            .filter(line -> !"bbbb".equals(line))
            //Print the other to new file
            .forEach(pw::println);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

答案 1 :(得分:0)

试试此代码

en_line