如果我有一个txt文件,如:
aaaa
bbbb
cccc
我不知道文本是什么,但我想删除第2行,它将是:
aaaa
cccc
我该怎么做
答案 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