Горячий, чтобы избавиться от java.Ио.Исключение на java.Ио.WinNTFileSystem.createFileExclusively?
в настоящее время у меня есть проблема, что я сталкиваюсь с исключением, которое я никогда не видел раньше, и поэтому я не знаю, как с этим справиться.
Я хочу создать файл в соответствии с заданными параметрами, но он не будет работать.
public static Path createFile(String destDir, String fileName) throws IOException {
FileAccess.createDirectory( destDir);
Path xpath = new Path( destDir + Path.SEPARATOR + fileName);
if (! xpath.toFile().exists()) {
xpath.toFile().createNewFile();
if(FileAccess.TRACE_FILE)Trace.println1("<<< createFile " + xpath.toString() );
}
return xpath;
}
public static void createDirectory(String destDir) {
Path dirpath = new Path(destDir);
if (! dirpath.toFile().exists()) {
dirpath.toFile().mkdir();
if(TRACE_FILE)Trace.println1("<<< mkdir " + dirpath.toString() );
}
}
каждый раз, когда я запускаю мое приложение, возникает следующее исключение:
java.io.IOException: The system cannot find the path specified
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(Unknown Source)
[...]
Как мне избавиться от него? (Я использую Win7 64bit btw)
1 ответов
проблема в том, что файл не может быть создан, если не весь содержащий путь уже существует - его родительский каталог и все родители над ним.
Если у вас есть путь c:\Temp и никаких подкаталогов под ним, и вы пытаетесь создать файл под названием c:\Temp\SubDir\myfile - ... тхт, что не удастся, потому что C:\Temp\SubDir не существует.
до
xpath.toFile().createNewFile();
добавить
xpath.toFile().mkdirs();
(Я не уверен, что mkdirs() требует просто путь в объекте; если это так, то измените эту новую строку на
new File(destDir).mkdirs();
В противном случае вы получите свое имя файла, созданное как подкаталог! Вы можете проверить, что правильно, проверив Проводник Windows, чтобы увидеть, какие каталоги он создал.)