我需要帮助来存储根据当前时间创建的新文件夹。在添加时间代码后,我收到错误,指出系统找不到指定的路径。
这是我目前的代码:
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)
答案 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();
}