Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.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,在我的java应用程序中,我使用FilenameFilter获取给定目录中的zip文件。我的目录结构如下所示 D\:\MyFiles\data\dir1 D\:\MyFiles\data\dir2 D\:\MyFiles\data\dir3 D\:\MyFiles\data\dir4 D\:\MyFiles\data\dir1\a.zip D\:\MyFiles\data\dir1\b.zip D\:\MyFiles\data\dir2\b1.zip D\:\MyFiles\data\dir3

在我的
java
应用程序中,我使用
FilenameFilter
获取给定目录中的
zip
文件。我的目录结构如下所示

D\:\MyFiles\data\dir1
D\:\MyFiles\data\dir2
D\:\MyFiles\data\dir3
D\:\MyFiles\data\dir4
D\:\MyFiles\data\dir1\a.zip
D\:\MyFiles\data\dir1\b.zip
D\:\MyFiles\data\dir2\b1.zip
D\:\MyFiles\data\dir3\d.zip
zip
文件位于
dir
文件夹中。我只给我的程序
D\\\:\\MyFiles\\data
,它使用
FilenameFilter
查找文件夹,然后在
dir
文件夹中查找以
zip
结尾的文件

for循环中
我正在为每个
zip
文件创建
新文件
对象,并调用
delete()
删除它们,但它们不会被删除

我使用
getPath()
方法打印了文件路径;输出如下所示

D\:\MyFiles\data\dir1
D\:\MyFiles\data\dir2
D\:\MyFiles\data\dir3
D\:\MyFiles\data\dir4
D\:\MyFiles\data\dir1\a.zip
D\:\MyFiles\data\dir1\b.zip
D\:\MyFiles\data\dir2\b1.zip
D\:\MyFiles\data\dir3\d.zip
然后我手动创建了一个
文件
对象,作为
文件f=new File(“D/:/MyFiles/data/dir1/a.zip”)
并尝试删除。它成功了

如何删除文件?我如何给出正确的路径

更新

这是我正在使用的代码:

// this contains folders start with 'dir' in 'D:\MyFiles\data\'
    Vector<String> dirList = utl.identifyDir(conf);

File dir;
for (int i = 0; i < dirList.size(); i++) {

// in my properties file ITEM_FOLDER is written as ITEM_FOLDER=D\:\\MyFiles\\data
//  LOG.fine(conf.readConfig(Configuration.ITEM_FOLDER)); returns D:\MyFiles\data

    dir = new File(conf.readConfig(Configuration.ITEM_FOLDER)
            + File.separator + dirList.get(i));

    // this contains all the files ends with 'zip' in 'dir' folders in 'D:\MyFiles\data\'
    Vector<String> zipFiles = utl.identifyZipFiles(dir);

    for (int x = 0; x < zipFiles.size(); x++) {

        /* delete */

        File sourcePath = new File(
                conf.readConfig(Configuration.ITEM_FOLDER)
                        + File.separator + dirList.get(i)
                        + File.separator + zipFiles.get(x));

            boolean sp = sourcePath.delete();

            LOG.fine("sourcePath : " + sourcePath.getPath() + " : "
                    + sp);

                // one of LOG prints is D:\MyFiles\data\dir3\d.zip : false



    }
}           
//其中包含以'D:\MyFiles\data'中的'dir'开头的文件夹
向量dirList=utl.identifiddir(conf);
文件目录;
对于(int i=0;i
当您创建一个要测试的新文件对象时,与使用
getPath
时有所不同。请注意,在阅读您的更新后,路径名中的所有斜杠都是\而不是/

,我认为这里有两种可能的情况

  • 您的应用程序中仍有未解决的问题。你没有使用FileInputStream或其他什么吗

  • 另一个过程是使.zip保持忙碌状态。你打开那个文件了吗?尝试关闭资源管理器窗口或类似的东西

  • 编辑:来自其他用户的检查表:

    • 检查路径是否正确,例如,
      file.exists()
      返回什么
    • 检查您是否具有以运行应用程序的用户身份删除该文件的权限
    • 检查您的代码中是否没有打开的文件句柄(例如,您是否只是从中读取而没有关闭输入流?)
    • 检查您是否没有在桌面应用程序中打开该文件

    成功了吗?这么说成功了?你试图删除什么文件?我还看到
    D/:/MyFiles
    ,这不可能是正确的。您没有使用
    D:/MyFiles
    ?嗯,路径看起来像“D\:\MyFiles…”而不是“D:\MyFiles…”是否正确?是否检查delete()返回的内容?出现了哪种异常?@Joetjah我将父路径存储在java
    properties
    文件中。我正在使用
    fileChooser
    选择它。在我的属性文件中,它写为
    D\:\\MyFiles\\data
    。在我的程序中,我正在读取属性文件并获取该路径。我没有使用
    getPath
    创建文件对象。它只用于打印以查找问题。然后发布一些代码。for循环看起来像什么?大家都在猜测,因为我们不知道它是什么样子。有一个
    FileInputStream
    ,我忘了关闭它。现在没事了。