В Windows создает файл C: \ joe \ logs \ foo.log (предполагается, что домашний пользователь - как C: \ joe)
В Unix создает файл /u/joe/logs/foo.log (предполагается, что домашний пользователь - как / u / joe)
Я предлагаю использовать File.separaratorвместо того, чтобы заботиться о текущей ОС. Например "/tmp/foo",File.separator+"tmp"+File.separator+"foo"
mat_boy
Я предполагаю, что это не создает фактический файл, но это создает объект Path. Вы можете использовать объект path для создания фактического файла на диске, используя Files.createFile (logfilePath).
Mr.Q
12
Если возможно, я бы предложил создать Pathнепосредственно из элементов пути:
Path path =Paths.get("C:","dir1","dir2","dir3");// if neededString textPath = path.toString();// "C:\\dir1\\dir2\\dir3"
Даже когда вопрос касается Java 7, я думаю, что полезно добавить, что начиная с Java 11 и далее, есть статический метод в Path классе который позволяет сделать это сразу:
Path.get()
независимым от платформы? это означает, чтоPath.get("lib","p2")
будет какlib\p2
в Windows, так иlib/p2
в LinuxОт javadocs .. http://docs.oracle.com/javase/tutorial/essential/io/pathOps.html
такой же как
В Windows создает файл C: \ joe \ logs \ foo.log (предполагается, что домашний пользователь - как C: \ joe)
В Unix создает файл /u/joe/logs/foo.log (предполагается, что домашний пользователь - как / u / joe)
источник
File.separarator
вместо того, чтобы заботиться о текущей ОС. Например"/tmp/foo"
,File.separator+"tmp"+File.separator+"foo"
Если возможно, я бы предложил создать
Path
непосредственно из элементов пути:источник
Даже когда вопрос касается Java 7, я думаю, что полезно добавить, что начиная с Java 11 и далее, есть статический метод в
Path
классе который позволяет сделать это сразу:Со всем путем в одной строке:
Path.of("/tmp/foo");
Путь разбит на несколько строк:
Path.of("/tmp","foo");
источник
Paths.get
.