java文本文件删除一行_Java程序删除txt文本文件中的重复行 - Break易站

给定一个文件input.txt。我们的任务是从中删除重复的行并将输出保存在文件output.txt中

过程:

1.为output.txt创建PrintWriter对象

2.为input.txt打开BufferedReader

3.为input.txt的每一行运行一个循环

3.1 flag = false

3.2为output.txt打开BufferedReader

3.3为output.txt的每一行运行一个循环

- >如果output.txt的行等于input.txt的当前行

- > flag = true

- >打破循环

4.检查标志,如果为false

- >将input.txt的当前行写入output.txt

- > Flush PrintWriter流

5.关闭资源。

Java程序删除txt文本文件中的重复行的示例

要成功运行以下程序,input.txt必须到同一文件夹中或为其提供完整路径。

// Java program to remove

// duplicates from input.txt and

// save output to output.txt

import java.io.*;

public class FileOperation

{

public static void main(String[] args) throws IOException

{

// PrintWriter object for output.txt

PrintWriter pw = new PrintWriter("output.txt");

// BufferedReader object for input.txt

BufferedReader br1 = new BufferedReader(new FileReader("input.txt"));

String line1 = br1.readLine();

// loop for each line of input.txt

while(line1 != null)

{

boolean flag = false;

// BufferedReader object for output.txt

BufferedReader br2 = new BufferedReader(new FileReader("output.txt"));

String line2 = br2.readLine();

// loop for each line of output.txt

while(line2 != null)

{

if(line1.equals(line2))

{

flag = true;

break;

}

line2 = br2.readLine();

}

// if flag = false

// write line of input.txt to output.txt

if(!flag){

pw.println(line1);

// flushing is important here

pw.flush();

}

line1 = br1.readLine();

}

// closing resources

br1.close();

pw.close();

System.out.println("File operation performed successfully");

}

}

输出:

File operation performed successfully

注意:如果output.txt存在于cwd(当前工作目录)中,那么它将被上面的程序覆盖,否则将创建新文件。

一个更好的解决方案是使用HashSet的存储input.txt中的每一行。由于set忽略重复值,因此在存储行时,检查它是否已存在于hashset中。只有在hashset中不存在时才将其写入output.txt。

要成功运行以下程序,input.txt必须到同一文件夹中,或者为它们提供完整路径。

// Efficient Java program to remove

// duplicates from input.txt and

// save output to output.txt

import java.io.*;

import java.util.HashSet;

public class FileOperation

{

public static void main(String[] args) throws IOException

{

// PrintWriter object for output.txt

PrintWriter pw = new PrintWriter("output.txt");

// BufferedReader object for input.txt

BufferedReader br = new BufferedReader(new FileReader("input.txt"));

String line = br.readLine();

// set store unique values

HashSet hs = new HashSet();

// loop for each line of input.txt

while(line != null)

{

// write only if not

// present in hashset

if(hs.add(line))

pw.println(line);

line = br.readLine();

}

pw.flush();

// closing resources

br.close();

pw.close();

System.out.println("File operation performed successfully");

}

}

输出:

File operation performed successfully

注意:如果output.txt存在于cwd(当前工作目录)中,那么它将被上面的程序覆盖,否则将创建新文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值