创建存储文件的目录时出错

时间:2015-04-16 05:40:28

标签: java

我需要帮助来存储根据当前时间创建的新文件夹。在添加时间代码后,我收到错误,指出系统找不到指定的路径。

这是我目前的代码:

public void fileCreation( String fileData ) throws IOException
    {
            String nameOfFile = "c:\\Shane\\Work\\Desktop\\Storage_" + Config.retrieveDate + "\\" + this.nameOfFile + ".csv";
            FileWriter writeFile = new FileWriter (nameofFile);

            writeFile.append( fileData );
            writeFile.flush();
            writeFile.close();
    }

我的配置文件包含当前代码行:

public static String retrieveDate = "";

在另一个档案中声明:

Config.retrieveDate = sdf.format(new Date());

输出应为:例如(Storage_20150416082500)-YYYYMMDDHHMMSS格式。

修改

发生错误:

java.io.FileNotFoundException: c:\Shane\Work\Desktop\Storage_2015041061404210\Type A.csv (Access is denied) at test.DataGetter.fileCreation(Retrieval.java:55)

3 个答案:

答案 0 :(得分:1)

当您第一次尝试为其创建文件时,看起来目录c:\Shane\Work\Desktop\Storage_20150416082500不存在。

如果是这种情况,您应首先检查目录是否存在,如果不存在,则创建它。只有这样才能在其中创建文件:

public void fileCreation(String fileData ) throws IOException {
    String dirName = "c:\\Shane\\Work\\Desktop\\Storage_" + Config.retrieveDate + "\\";
    File dir = new File(dirName);
    if (!dir.exists())
        dir.mkdir();

    //directory definitely exists here, we can create a file to it:

    String nameOfFile = dirName + this.nameOfFile + ".csv";
    FileWriter writeFile = new FileWriter (nameofFile);

    writeFile.append( fileData );
    writeFile.flush();
    writeFile.close();
}

当然要做到这一点,父目录(c:\Shane\Work\Desktop)必须首先存在。

答案 1 :(得分:0)

如果您要访问现有文件,最好始终尝试检查文件是否真的存在,您可以通过

来实现它。
File file=new File(pathToYourFile.extension);
if(file.exists()){
// do whatever you want to do 
}
else{
//either throw any exception or create that file manually if required
}

答案 2 :(得分:0)

确保您尝试创建文件的目录存在,如果不存在,则创建。

public void fileCreation( String fileData ) throws IOException {
    String nameOfFile = "c:\\Shane\\Work\\Desktop\\Storage_" + Config.retrieveDate + "\\" + this.nameOfFile + ".csv";

    // Make directories if not present
    new File(nameOfFile).getParentFile().mkdirs();

    FileWriter writeFile = new FileWriter (nameofFile);

    writeFile.append( fileData );
    writeFile.flush();
    writeFile.close();
}