所以问题是我有一个存储有很多行的信息的文本文件。每一行应如下所示:
产品:<名称:,导入价格:,数量:>
我正在尝试编写有助于用户输入数字的代码,程序会找到与该数字对应的行并删除该行。有什么建议吗?
答案 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());