同时适用于unix和windows的Java文件名
我需要打开一个文件(临时文件)并写入一些内容 如何才能使其适用于所有操作系统类型(至少适用于unix和windows) 下面是我目前的代码 每次我想在windows上测试一些东西时,我都会在这些行之间切换(注释/取消注释) 您可以在Java中使用。假设在文件路径中使用同时适用于unix和windows的Java文件名,java,unix,file-io,Java,Unix,File Io,我需要打开一个文件(临时文件)并写入一些内容 如何才能使其适用于所有操作系统类型(至少适用于unix和windows) 下面是我目前的代码 每次我想在windows上测试一些东西时,我都会在这些行之间切换(注释/取消注释) 您可以在Java中使用。假设在文件路径中使用“user.home”,则文件将被放置在用户主目录中。你不必在两者之间切换 例: 通过@EJP comment添加另一种方式以避免文件分隔符 File file = new File(System.getProperty("user
“user.home”
,则文件将被放置在用户主目录中。你不必在两者之间切换
例:
通过@EJP comment添加另一种方式以避免文件分隔符
File file = new File(System.getProperty("user.home"), "Carrier_BackUp_Restore.sql");
您可以在Java中使用。假设在文件路径中使用“user.home”
,则文件将被放置在用户主目录中。你不必在两者之间切换
例:
通过@EJP comment添加另一种方式以避免文件分隔符
File file = new File(System.getProperty("user.home"), "Carrier_BackUp_Restore.sql");
对于临时文件,您可以让JVM为您选择合适的路径:请参阅。对于临时文件,您可以让JVM为您选择合适的路径:请参阅。“我需要打开一个文件(临时文件)并向其写入内容”。 为什么不使用,但请记住文件不是自动删除的,您可以使用或通过选项打开它。如果要手动创建文件,请使用 “我需要打开一个文件(临时文件)并向其中写入内容”。 为什么不使用,但请记住文件不是自动删除的,您可以使用或通过选项打开它。如果要手动创建文件,请使用
使用目录的相对寻址。不要使用
c://
而使用/
…对于分隔符,只需使用'/'
。它适用于Java中的所有平台。@EJP虽然大多数主流平台使用或支持/
作为文件分隔符,但可以说它适用于“所有平台”。file.separator
常量(或系统属性)是语言和运行时保证的唯一真正可移植的解决方案。请使用目录的相对寻址。不要使用c://
而使用/
…对于分隔符,只需使用'/'
。它适用于Java中的所有平台。@EJP虽然大多数主流平台使用或支持/
作为文件分隔符,但可以说它适用于“所有平台”。file.separator
常量(或系统属性)是语言和运行时保证的唯一真正可移植的解决方案。您不需要file.separator属性。您可以使用File.separator
(参见此处了解原因)@RobAu Done,change。谢谢你的小费!您也不需要它:要么使用“/”
,要么只编写新文件(System.getProperty(“user.home”),“Carrier\u BackUp\u Restore.sql”)
。虽然大多数主流平台使用或支持/
作为文件分隔符,但文件.separator
常量(或系统属性)是唯一保证在专用平台上也能工作的真正可移植的解决方案。您不需要file.separator属性。您可以使用file.separator
(参见此处了解原因)@RobAu Done,change。感谢您提供的提示!您不需要这样做:使用“/”
或只需编写新文件(System.getProperty)(“user.home”)、“Carrier\u BackUp\u Restore.sql”)
。虽然大多数主流平台使用或支持/
作为文件分隔符,但file.separator
常量(或系统属性)是唯一能保证工作的真正可移植的解决方案,即使在专用平台上也是如此。我也尝试过,它确实创建了一个tmp文件。Thanks@Arun很高兴它有帮助。公认的答案是使用java 6风格,我提到的答案是使用java 7。java 7添加了一些很好的特性来处理文件。看看它们,让你的代码更简洁我也试过了,它确实创建了一个tmp文件。Thanks@Arun很高兴它有帮助。公认的答案是使用java 6风格,我提到的答案是使用java 7。java 7添加了一些很好的特性来处理文件。看看它们,让你的代码变得更好
File file = new File(System.getProperty("user.home"), "Carrier_BackUp_Restore.sql");
Paths.get("foo", "somelocation").toFile();