【问题标题】:Populating and removing data from a txt.file从 txt.file 填充和删除数据
【发布时间】:2019-01-18 06:00:00
【问题描述】:

嘿,我正在做一个学校项目,并正在尝试编写一个问题库。我正在使用允许用户输入数据的 JFrame。然后,我想将数据存储在一个 txt 文件中,以便以后可以检索它。我在将其添加和删除到问题库时遇到问题。关于如何删除某个“问题”的任何提示?

例如,如果我想从以下文件中删除数学问题:

 Geography_What is England's capital_Berlin_Manchester_Dover_London_D_3
 Maths_What is 2+3_7_9_5_6_C_1 
 Economics_What is demand_idk_stuff_demand_supply_C_2 

删除

    String topic = Topic.getSelectedItem().toString();
    String question = Question.getText();
    String a = AnswerA.getText();
    String b = AnswerB.getText();
    String c = AnswerC.getText();
    String d = AnswerD.getText();
    String answer =Correct.getText();
    String credit =Points.getText();
    String remove = topic + "_" + question + "_" + a + "_" + b + "_" + c + "_" + d + "_" + answer + "_" + credit;
    File inputFile = new File("Questions.txt");
    File tempFile = new File("QuestionsTemp.txt");

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

    String lineToRemove = remove;
    String currentLine;

    while((currentLine = reader.readLine()) != null) {
        // trim newline when comparing with lineToRemove
        String trimmedLine = currentLine.trim();
        if(trimmedLine.equals(lineToRemove)) continue;
        try {
            writer.write(currentLine + System.getProperty("line.separator"));
        } catch (IOException ex) {
            Logger.getLogger(QuestionBank.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    try {
        inputFile.delete();
        reader.close();
        writer.close();
        inputFile.delete();
        boolean successful = tempFile.renameTo(inputFile);
        System.out.println(successful);
    }
    catch (IOException ex) {
        ex.printStackTrace();
    }

添加

    String topic = Topic.getSelectedItem().toString();
    String question = Question.getText();
    String a = AnswerA.getText();
    String b = AnswerB.getText();
    String c = AnswerC.getText();
    String d = AnswerD.getText();
    String answer =Correct.getText();
    String credit =Points.getText();
    String answerPos = "AaBbCcDd";
    String scorePos = "12345";

        try{
            FileWriter writer = new FileWriter("Questions.txt", true);
            writer.write(System.getProperty("line.separator"));
            writer.write(topic);
            writer.write("_");
            writer.write(question);
            writer.write("_");
            writer.write(a);
            writer.write("_");
            writer.write(b);
            writer.write("_");
            writer.write(c);
            writer.write("_");
            writer.write(d);
            writer.write("_");
            writer.write(answer);
            writer.write("_");
            writer.write(credit);
            writer.close();
            JOptionPane.showMessageDialog(rootPane, "Success");
        }
        catch(HeadlessException | IOException e){
            JOptionPane.showMessageDialog(rootPane, "Error");
        }
    }

【问题讨论】:

  • 加载您的文件。在内存中操作它。写回文件。

标签: java file variables populate


【解决方案1】:

我建议您使用序列化库来保存像 Gson 这样的对象。然后,您可以更轻松地管理保存和加载。或者使用标准格式,例如 CSV 或 XML。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    相关资源
    最近更新 更多