Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.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 为什么File.delete()方法不起作用?_Java_File_Netbeans - Fatal编程技术网

Java 为什么File.delete()方法不起作用?

Java 为什么File.delete()方法不起作用?,java,file,netbeans,Java,File,Netbeans,由于registry.delete()method没有删除文件“registry.txt”,因此我在查找该漏洞的过程中几乎两天都很沮丧。我使用的是GUI,每次我点击一行JTable,然后点击“Ban”按钮,它都不会删除文件“Registry.txt”,也不会写!但是,如果我从另一个类执行此操作,例如具有main()方法的类,它会正确清除。我想做的是从Registry.txt中删除一行,在另一个.txt文件中写入不包含特定字符串的所有行名称,然后将其重命名为name Registry.txt。我不

由于
registry.delete()
method没有删除文件“registry.txt”,因此我在查找该漏洞的过程中几乎两天都很沮丧。我使用的是GUI,每次我点击一行
JTable
,然后点击“Ban”按钮,它都不会删除文件“Registry.txt”,也不会写!但是,如果我从另一个类执行此操作,例如具有
main()
方法的类,它会正确清除。我想做的是从Registry.txt中删除一行,在另一个.txt文件中写入不包含特定
字符串的所有行
名称,然后将其重命名为name Registry.txt
。我不知道发生了什么事。下面是我的代码:

ActionListener ban = new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        int fila = table.getSelectedRow();
        String nombre = (String) modelo.getValueAt(fila, 0);
        modelo.removeRow(fila);
        try {
            removeUser(nombre);
        } catch (IOException ex) {
            System.out.println(ex.getMessage());
        }
    }
};
btnBanear.addActionListener(ban);

...

public void removeUser(String nombre) throws IOException {
    String lee = null;
    String usuario = "";
    CharSequence aux = nombre;
    try {
        registro = new File("Registro.txt");
        tempFile = new File("Registro1.txt");
        lector = new BufferedReader(new FileReader(registro));
        fw = new FileWriter(tempFile);
        writer = new BufferedWriter(fw);
    } catch (FileNotFoundException ex) {
        System.out.println(ex.getMessage());
    } catch (IOException ex) {
        System.out.println(ex.getMessage());
    } catch (NullPointerException e) {
        System.out.println(e.getMessage());
    }

    while ((lee = lector.readLine()) != null) {
        System.out.println(aux);
        if (lee.contains(nombre)) {
            continue;
        } else {
            writer.write(lee);
        }
    }
    lector.close();
    fw.close();
    writer.close();
    registro.delete();
}

我不认为我们有足够的数据来确切了解为什么会发生这种情况,但我可以给你们一些强烈的怀疑

File.delete()
抛出四种可能的异常;其中三个在这里适用
NoSuchFileException
(值得特别检查)、
IOException
SecurityException
NoSuchFileException
派生自
IOException
,无论如何都会被捕获;尽管您可能仍然希望捕获它,因为将其强制转换为
IOException
将删除相关数据
SecurityException
通常是当安全管理器挡道时,这种情况在基于web的程序上经常发生。我想知道你的文件是一个applet还是它的现代等价物,web应用程序
SecurityException
是一个
RuntimeException
,因此您不必捕获它,但您可以而且可能应该捕获它。这可以解释世界

最后,还可以使用
File.deleteIfExists()
。如果要删除的文件实际存在,则返回true值;如果找不到,则返回false值。值得一看,因为如果您的路径倾斜,并且在提供的位置找不到该文件,那么它将不会被删除。有理由认为您的程序的工作目录可能与您想象的不同。不过,这与检查
NoSuchFileException
大致相同

当然,您甚至可以使用
System.out.println(System.getProperty(“user.dir”))
检查工作目录



我的钱在
SecurityException
上,或者路径错误。但是,如果我错了,如果你能给我们看一下你的其他按钮代码,那就太好了,因为那里可能也有相关的问题。

“每次我点击一行JTable,然后点击“Ban”按钮,我都会有兴趣看到一个可运行的示例,它演示了工作流程,因为它很可能是(开始)对于这个问题,我还建议您在创建文件资源未关闭的可能场景时,看看是否正确创建/更新Registro1.txt?我想知道动作侦听器线程的CWD是否与您预期的不同。请下次缩进您的代码。这一个是在房子上:-)