Исправление
Используйте косую черту или обратную косую черту после имени диска:
final Path path = Paths.get("c:/").resolve("folderOne").resolve("filename.txt");
Files.createDirectories(path.getParent());
Обратите внимание, что косая черта (c:/
) отлично работает в Windows.Также работает обратная косая черта: Paths.get("c:\\")
.
Также обратите внимание, что Paths.get()
и Path.resolve()
делают , а не сами создают каталоги.Вы можете использовать Files.createDirectories()
, чтобы сделать работу.
Анализ всего пути с помощью Paths.get()
Если путь исправлен, вы можете проанализировать его непосредственно с помощью Paths.get()
- не нужно вызывать .resolve()
:
final Path path = Paths.get("c:/folderOne/filename.txt");
Опять же, в Windows работают как слеш, так и обратный слеш.
Относительные к диску пути
C:
, без (обратных) слешей создает путь DRIVE_RELATIVE
- означает, что путь начинается с текущей папки на данном диске.Цитата из https://docs.microsoft.com/en-us/dotnet/standard/io/file-path-formats
C:Projects\apilibrary\apilibrary.sln
Относительный путь из текущей директории диска C:
.
Вы можете увидетьэто путем преобразования в абсолютный путь:
System.out.println(
Paths.get("c:").resolve("folderOne").resolve("filename.txt")
.toAbsolutePath()
);
Ссылки: