使用行号删除文件中的特定行

时间:2016-04-08 05:03:40

标签: java

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

  

产品:<名称:,导入价格:,数量:>

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

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

您也可以使用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);
            }
        }
    }
}

采用两个参数:文件名和行号。

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

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

答案 2 :(得分:0)

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());