繁体   English   中英

Java编程中删除和重命名文件

[英]Deleting and Renaming File in Java Programming

我需要在 Java 编程中删除和重命名文件方面的帮助。 我的问题是无法删除原始文件,无法重命名第二个文件。 这是片段代码。 任何建议将不胜感激。

import java.awt.event.*;
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;




public void deleteLine(String content) {
    try {

        File inFile = new File("football.dat");
        if (!inFile.isFile()) {
            System.out.println("Parameter is not an existing file");
            return;
        }
        File tempFile = new File(inFile.getAbsolutePath() + "2");
        BufferedReader br = new BufferedReader(new FileReader(inFile));
        PrintWriter pw = new PrintWriter(new FileWriter(tempFile), true);

        String linetobeempty = null;
        while ((linetobeempty = br.readLine()) != null) {

            if (!linetobeempty.trim().equals(content)) {
                pw.println(linetobeempty);
                pw.flush(); System.out.println(linetobeempty);
            }
        }

        pw.close();        
        br.close();
       boolean b = inFile.delete();

        if (!b) {
            System.out.println("Could not delete file");
            return;
        }

        //Rename the new file to the filename the original file had.
        if (!tempFile.renameTo(inFile)) {
            System.out.println("Could not rename file");
        }


    } catch (FileNotFoundException ex) {
        ex.printStackTrace();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

此代码片段中没有任何内容是文件未被删除的直接原因。 问题在于更深层次 - 权限,由其他一些进程打开,通常的东西。 检查所有这些。 当然,删除失败后重命名失败的原因是显而易见的,所以目前您只知道一个问题。

你在 Windows 上吗? 在 Windows 上,如果任何进程在文件上有文件句柄,则取消链接和重命名将失败(与 UNIX 不同)。 我什至注意到,在 Java 中进行文件 I/O 测试时,有时您需要在写入文件和删除文件之间给操作系统一个中断。 关于renameTo 和 delete的文档提供了一些有限的见解。

为了简化您的问题并更好地调试它,只需创建文件而不是写入文件——使用 File.createNewFile()。

可能您遇到了与无法删除文件 Java相同的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM