【问题标题】:Remove a specific line in a file using line number使用行号删除文件中的特定行
【发布时间】:2016-04-08 05:03:39
【问题描述】:

所以问题是我有一个存储信息的文本文件有很多行。每行应如下所示:

产品:

我正在尝试编写帮助用户输入数字的代码,程序将找到与该数字对应的行并删除该行。有什么建议吗?

【问题讨论】:

标签: java


【解决方案1】:

尝试使用下面的代码行:

FileInputStream fs= new FileInputStream("someFile.txt");

BufferedReader reader = new BufferedReader(new InputStreamReader(fs));
BufferedWriter writer = new BufferedWriter(new FileWriter(fs));

for(int i = 0; i < file_length; ++i){
   br.readLine();
   String lineIWant = br.readLine();
   if(i==your line number){
       i = file_length;
       writer.write(currentLine + System.getProperty("line.separator"));
   }
}
reader.close();
writer.close();

【讨论】:

  • 你将如何获得file_length
  • @muzahidbechara 请阅读此链接stackoverflow.com/questions/12749655/…
  • 为什么你的代码这么乱?.. if(i==your line number){ //error, br.readLine(); - br 不存在,它是关于 reader 变量的。最好包含我们可以编译的完整代码
【解决方案2】:

你也可以使用 LineNumberReader:

import java.io.LineNumberReader;
import java.io.FileReader;
import java.io.IOException;

class Stackoverflow36491903 {
    public static void main(String[] args) throws IOException {
        int lineNo = Integer.valueOf(args[1]);

        LineNumberReader r = new LineNumberReader(new FileReader(args[0]));
        while (true) {
            String line = r.readLine();
            if (line == null) {
                break;
            }
            if (r.getLineNumber() != lineNo) {
                System.out.println(line);
            }
        }
    }
}

接受两个参数:文件名和行号。

这只是打印在请求的行号处删除行的行。

使用写入器将其写回文件。

【讨论】:

    【解决方案3】:
    Scanner scan = new Scanner(System.in);
    int lineNum = scan.nextInt();
    File file = new File("file.txt");
    FileReader reader = new FileReader(file);
    scan = new Scanner(reader);
    StringBuilder sb = new StringBuilder("");
    while(scan.hasNextLine()) {
        String line = scan.nextLine();
        if (--lineNum != 0) sb.append(line).append(System.getProperty("line.separator"));
    }
    FileWriter writter = new FileWriter(file);
    writter.write(sb.toString());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-07
      • 1970-01-01
      • 1970-01-01
      • 2014-06-21
      • 2018-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多