3 回答
TA贡献1843条经验 获得超7个赞
当你使用
file.makeDirs();
它创建了所有不存在的目录,包括"NewFileToGenerate" +getName+headerDate+ ".xls". 是的,您要创建的文件是作为目录创建的。
然后你调用了 file.createNewFile(),它会返回 false,因为存在与文件同名的目录。
尝试对目录使用 FileOutputStream 将不起作用,将引发异常。
因此,您将看到此错误消息:D:/New file/NewFileToGenerateUser26/2018 20:00:14.xls (Is a directory)
可能的修复:
先创建父目录,然后在不同的语句中创建父目录后创建您要创建的文件。如:
File file = new File("parent1/parent2");
file.mkDirs();
File desiredFile = new File("parent1/parent2/desiredfile.extensionhere");
desiredFile.createNewFile();
TA贡献1809条经验 获得超8个赞
正如 BrokenEarth 所说,您已经使用要创建的文件的名称创建了一个目录。所以你应该分两步进行:
创建目标目录
在目录中创建文件
要做这样的事情,你可以做这样的事情:
String filePath = "D:" + File.separator + "someDir";
File dir = new File(filePath);
if (dir.exists() || dir.mkdirs()) {
// assuming that resultFileName contains the absolute file name, including the directory in which it should go
File destFile = new File(resultFileName);
if (destFile.exists() || destFile.createNewFile()) {
FileOutputStream fos = new FileOutputStream(destFile);
// ...
}
}
TA贡献1856条经验 获得超5个赞
您的文件正在创建为目录我已修复您的代码并添加了注释
File root = new File(filePath);
//Check if root exists if not create it
if(!root.exists()) root.mkdirs();
String resultFileName = "NewFileToGenerate" +getName+headerDate+ ".xls";
File xlsFile = new File(root, resultFileName);
//check if xls File exists if not create it
if(!xlsFile.exists()) {
try {
xlsFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
添加回答
举报