当前位置: 首页 > 知识库问答 >
问题:

是否有一种方法可以修改一个文件并从新的文件中读取,该文件具有新的内容?

鲍鸿波
2023-03-14

当我从文本文件中删除一行,将其添加到临时文本文件中,然后用原始文件替换临时文件时,扫描仪没有加载正确的文本。它是从原始文件加载内容,而不是更新的文件。我想让它用新的内容加载更新的文件。

try
{
    File inputFile = new File("department.txt");
    File tempFile = new File("departmentTemp.txt");

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

    String lineToRemove = departResIDField.getText();
    String currentLine;

    while((currentLine = reader.readLine()) != null) 
    {
         String trimmedLine = currentLine.trim();
         if(trimmedLine.startsWith(lineToRemove)) continue;
         writer.write(currentLine + System.getProperty("line.separator"));
    }

    writer.close(); 
    reader.close(); 
    inputFile.delete();
    tempFile.renameTo(inputFile);

    fWriter = new FileWriter(inputFile.getAbsoluteFile(), true);
    printOut = new PrintWriter(fWriter);
    writer = new BufferedWriter(fWriter);
    writer.write(departResIDField.getText() + "\t" + 
    departResNameField.getText() + "\r\n");
    writer.close();

    int result = Integer.parseInt(departResIDField.getText());
    depart.add(new Department(result, departResNameField.getText()));

    insResDepartModel.addElement(departResNameField.getText());

    depart.remove();

    //This is where I am having problem with the code
    //The scanner is scanning old data not the updated data             
    Scanner scan = new Scanner(inputFile);

    while(scan.hasNext())
    {
        depart.add(new Department(scan.nextInt(), scan.next()));
    }
    scan.close();

    for(int i = 0; i < depart.getSize(); i++)
    {
        Department d1 = depart.get(i);
        System.out.println(d1.departID + d1.departName);
    }

    menuLayout.show(cardLayout, "15");
    departResIDField.setText(null);
    departResNameField.setText(null);
    departUpdateButton.setVisible(false);
    departCancelButton.setVisible(false);
} catch (IOException f) 
    {
        f.printStackTrace();
    }

输出:1生物2化学4统计5物理3数学

共有1个答案

阚英武
2023-03-14

当然有办法。但是我建议您在文本文件中保存LinkedList,如果您只想保存主题,并且尝试只读写一个文件。例如,可以使用ObjectOutputStream保存复杂的数据结构。LinkedListjava实用程序有一个名为replace的指令来修改某些索引。因此,如果要修改文件,则加载保存的LinkedList,然后修改列表并将其保存在同一个文件中。

 类似资料:
  • 我希望避免文件中杂乱的东西,而在我看来,放在单独的文件中会更好。 应该类似于 这有可能吗?如果不是,什么是避免杂乱的明智方法呢?

  • 本文向大家介绍写一个读取文件和文件的方法相关面试题,主要包含被问及写一个读取文件和文件的方法时的应答技巧和注意事项,需要的朋友参考一下 var fs = require('fs'); var data = fs.readFileSync('./index.html', 'utf8'); // 停止执行代码直到操作结束 console.log(data) fs.readFile('./test.tx

  • 问题内容: 我不在乎有什么区别。我只想知道内容是否不同。 问题答案: 低级方式: 高级方式:

  • 在我的课堂上,我们使用方法来计算文本文件中的数据。如果我有一个看起来像这样的文件: 有没有无论如何从文件中提取此数据,然后将其发送到一个方法来计算,然后返回该计算以显示在main上?我很困惑Java如何跳过每一行,计算数字而不是人名。我在考虑使用和。但是,如果我应该将这些文本文件行变量读取为双打,我如何能够设置字符串读取文本文件中的行?抱歉问了你这么多问题我纠结了很久快把我逼疯了

  • 问题内容: 我有一个脚本读取文件,然后根据该文件完成测试,但是我遇到了一个问题,因为一个小时后文件会重新加载,并且无法在该时间点或之后重新读取该脚本。 所以: 获取要读取的新文件 读取文件 执行文件测试 获取要读取的新文件(具有相同的名称-但如果它是解决方案的一部分,则可以更改) 读取新文件 对新文件执行相同的测试 谁能建议一种使Python重新读取文件的方法? 问题答案: 要么到文件开头 或再次

  • 问题内容: 我知道你可以打电话 如果它不是可执行文件,则会得到一个异常,但这是不安全的,因为运行可执行文件会产生副作用。 我想只检查扩展名在Windows上就足够了,但是有没有办法我可以读取* nix文件系统上的可执行文件呢? 找出文件在OS中是否可执行的最佳方法是什么? 问题答案: 参见java.io.File.canExecute()