无法创建文件,因为文件不存在

时间:2015-08-07 11:29:23

标签: java file ioexception

Java不会让我创建NewNewFile,因为我想创建的文件不存在, duh ,这就是我想创建它的原因。这是我的代码段。

System.out.println("Please input the path of the install directory.");

System.out.print(">");
installLocation = input.nextLine();

File spreadsheet = new File (installLocation + "diatracker.csv");
File settingsFile = new File (installLocation + "settings.txt");


if ( spreadsheet.exists() )
{
    if ( isValidFile ( spreadsheet.toString() ) )
    {
        //do nothing
    }
    else
    {
        spreadsheet.delete();
        spreadsheet.createNewFile();
    }
}
else
{
    spreadsheet.createNewFile();
}

这是我的错误。

请输入安装目录的路径。

C:\用户\ DigiDuncan \桌面\ DiaTracker \

Exception in thread "main" java.io.IOException: The system cannot find the path specified
    at java.io.WinNTFileSystem.createFileExclusively(Native Method)
    at java.io.File.createNewFile(Unknown Source)
    at DiaTrackApp.firstTimeSetup(DiaTrackApp.java:201)
    at DiaTrackApp.main(DiaTrackApp.java:50)

请帮帮我,这个程序对我来说非常重要。谢谢!

编辑:证明路径存在

Proof the file path exists.

再次编辑:I' M DUMB

我确实把这个文件夹命名为错误,没有。我很抱歉浪费你的时间,伙计们。 即可。〜

2 个答案:

答案 0 :(得分:5)

这很可能是因为给定的父文件夹路径不存在而导致的。解决这个问题的一个简单方法是使用:

File#mkdirs()

getParentFile().mkdirs();实际上会为文件创建所有父文件夹(如果它们不存在),并将给定文件视为新文件夹。这就是为什么你应该使用getParentFile(),如果你仍想创建一个新文件,路径的最后一部分是好的,一个文件!

编辑:只是一个额外的注释,使用input.nextLine().replace("/", File.separator).replace("\\", File.separator);的好方面是,您不必担心文件路径在运行时被更改或不正确。

如果用户输入不符合操作系统的路径指南,您还应该使用NSMutableArray

答案 1 :(得分:1)

如果父目录存在,它应该能够创建文件......

确定:

// use `\\` or `/` or File.separator to be sure
File file = new File("C:\\Users\\DigiDuncan\\Desktop\\DiaTracker");
file.mkdirs();// to create parent folders

现在应该可以了。

如果没有文件夹,则无法创建文件......您可以查看:

file.exists();// also for folders
file.getParent().exists();// If parent exists, it should be able to create a child (if right permissions)