Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 文件不会从临时文件传输回原始文件_Java_File - Fatal编程技术网

Java 文件不会从临时文件传输回原始文件

Java 文件不会从临时文件传输回原始文件,java,file,Java,File,这是我的代码摘录。 我已经搜索了堆栈溢出,并完成了所有建议,即删除原始文件并将临时文件重命名为原始文件,我还尝试了writer.flush。下面是.txt文件的外观 成绩输入: 1) Bob Do, Comp, 18 2) Matt Well, computing, 100 3) Adam Smith, Computing, 99 4) Mike Frank-Jones, Drama, 69 MyTempFile: Matt Well, computing, 100 Adam Smith, C

这是我的代码摘录。 我已经搜索了堆栈溢出,并完成了所有建议,即删除原始文件并将临时文件重命名为原始文件,我还尝试了writer.flush。下面是.txt文件的外观

成绩输入:

1) Bob Do, Comp, 18
2) Matt Well, computing, 100
3) Adam Smith, Computing, 99
4) Mike Frank-Jones, Drama, 69
MyTempFile:

Matt Well, computing, 100
Adam Smith, Computing, 99
Mike Frank-Jones, Drama, 69
删除后输入等级:

Bob Do, Comp, 18
Matt Well, computing, 100
Adam Smith, Computing, 99
Mike Frank-Jones, Drama, 69
为什么会这样?谢谢

    File deleteRecord = new File("GradeEnter.txt");
    reader = new BufferedReader(new FileReader(deleteRecord));

    File tempFile = new File("myTempFile.txt");
    BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));

    Scanner scanner = new Scanner(System.in);
    System.out.print("To delete, please Enter First Name: ");
    firstNameDelete = scanner.nextLine();
    System.out.print("Please Enter Surname: ");
    lastNameDelete = scanner.nextLine();

    String currentLine;

    while((currentLine = reader.readLine()) != null) {
        if(currentLine.contains(firstNameDelete) && currentLine.contains(lastNameDelete)) continue;
        writer.write(currentLine);
        writer.newLine();
    }
    reader.close(); 
    writer.close();
    deleteRecord.delete();
    tempFile.renameTo(deleteRecord);

既然临时文件应该被删除,你怎么能看到它呢?结论:重命名没有发生。不要忽略delete和renameTo返回的布尔值。为什么File.delete在删除失败时不会引发异常?@JBNizet我当时打开了临时文件。当尝试关闭它时,仍然没有任何结果happens@Adamdo Boolean deletedSuccessfully=deleteRecord.delete;并打印DeletedSuccessfully的值,该值应为true,以便代码正常工作。与renamedSuccessfully相同=tempFile.renameTodeleteRecord;您还可以将这两行代码粘在一个try块中,看看是否可以捕获一个异常,该异常将告诉您到底出了什么问题。看见