无法在Windows上删除java中的文件....?

时间:2015-05-05 13:40:43

标签: java

我正在尝试使用file.delete(),但它不会删除文件?我在linux上对其进行了测试,删除了文件,但在windows上却没有删除文件原因..?

代码:

private File getFiletobeUpload(File foto) {

    boolean errorRename = true;
    File uploadFile = null;
    File testFile = foto;
    String subdirname = this.checkDir(foto);

    if (testFile.canWrite()) {
        uploadFile = new File(AppConstants.PHOTOPATH + "/" + subdirname +  "/" + testFile.getName());


        try {
            FileInputStream origStream = new FileInputStream(testFile);
            FileOutputStream outStream = new FileOutputStream(uploadFile);
            origStream.getChannel().transferTo(0, testFile.length(), outStream.getChannel());
            origStream.close();
            origStream = null;
            outStream.close();
            outStream = null;

        } catch (Exception e) {
            this.errorString += "error while writing to orig dir";
            logger.error(e);
        }

        errorRename = !testFile.delete();
        if (errorRename) {
            this.errorString += "error while deleting the file";
        }
    }

    testFile = null;
    return uploadFile;
}

3 个答案:

答案 0 :(得分:0)

您的代码似乎有点奇怪,您正在检查" testFile"用于写访问但实际上从它读取(FileInputStream)。第一个try / catch块是否正常运行?也许您应该检查文件是否存在:

System.out.println("File exists: "+testFile.exists());
errorRename = !testFile.delete();

此外,如果您只想重命名文件,请使用:

 file.renameTo(File dest)

答案 1 :(得分:0)

一般建议:如果可以,请考虑使用java.nio包中的类到您的文件IO(不确定您正在运行哪个版本的Java),因为错误处理已得到改进,您应该能够根据抛出的异常类型和异常消息找到更具体的失败原因。

答案 2 :(得分:-1)

根据API,磁盘驱动器说明符 - " /"对于UNIX根目录," \\"对于Microsoft Windows UNC路径名。

所以对于Windows:

uploadFile = new File(AppConstants.PHOTOPATH + "\\" + subdirname +  "\\" + testFile.getName());