gpt4 book ai didi

java - 使用用户输入从分隔文本文件中删除特定行。 ( java )

转载 作者:行者123 更新时间:2023-12-01 08:49:04 24 4
gpt4 key购买 nike

这是我当前的代码:

import java.util.*;
import java.io.*;

public class Adding_Deleting_Car extends Admin_Menu {

public void delCar() throws IOException{
Scanner in = new Scanner(System.in);
File inputFile = new File("inventory.txt");
File tempFile = new File("myTemp.txt");

BufferedReader reader = new BufferedReader(new FileReader(inputFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));

String currentLine;

String lineToRemove;
System.out.println("Enter the VIN of the car you wish to delete/update: ");
lineToRemove = in.next();

while((currentLine = reader.readLine()) != null) {
String trimmedLine = currentLine.trim();
if(trimmedLine.equals(lineToRemove)) continue;
System.out.println(trimmedLine);
writer.write((currentLine) + System.getProperty("line.separator"));
}
writer.close();
reader.close();
boolean successful = tempFile.renameTo(inputFile);
System.out.println(successful);
}
}

我想根据用户输入从文件中删除特定行的文本。例如,这是我的文本文件:

AB234KXAZ;本田;雅阁;1999;10000;3000;G

AB234KL34;本田;思域;2009;15000;4000;R

CD555SA72;丰田;凯美瑞;2010;11000;7000;S

FF2HHKL94;BMW;535i;2011;12000;9000;W

XX55JKA31;福特;F150;2015;50000;5000;B

我希望用户输入他们选择的字符串,这将是该列中的第一个字段(例如XX55JKA31),然后从文件中删除该行文本。我在网上找到了一些代码,但一直无法成功使用。

我当前的代码似乎只是重写了临时文本文件中的所有内容,但没有删除它。

最佳答案

您正在使用 File.renameTo,其记录如下: https://docs.oracle.com/javase/8/docs/api/java/io/File.html#renameTo-java.io.File-

根据文档,如果文件已经存在,则可能会失败,应该使用Files.move。

这是与 Files.move 等效的代码:

boolean successful;
try {
Files.move(tempFile.toPath(), inputFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
successful = true;
} catch(IOException e) {
successful = false;
}

注意:您搜索 VIN 的代码也是错误的。请参阅 Jure Kolenko 的回答,了解该问题的一种可能解决方案。

展望 future ,您应该考虑使用实际的数据库来存储和操作此类信息。

关于java - 使用用户输入从分隔文本文件中删除特定行。 ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42502749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com