正斜杠还是反斜杠?
我期待着(分别)与我的程序不同的目录编写和读取文本文件。 当我指定要写入或读取的目录时,我应该使用正斜杠还是反斜杠来标识文件路径?
使用正斜杠将使其与系统无关。 为了简单起见,我坚持这一点。
如果您显示用户的路径,请考虑使用java.io.File.separator
。 你宁愿不让那些Windows用户感到惊讶。 他们是一个疯狂的人。
我从来没有在任何地方发现它,但JDK类允许你使用斜杠,无论你是否在Windows上。 (您可以在JDK源中看到这一点,它会为您显式转换路径分隔符。)
正式 – 当然在您正在进行的任何UI中 – 您应该使用file.separator
系统属性 ,该属性可通过System.getProperty
(标准系统属性列表记录在System.getProperties
的文档中 ):
String sep = System.getProperty("file.separator");
…还有static
字段它们也可用作File.separator
(和File.separatorChar
)。
您还可以使用java.io.File
类的各种function来组合和拆分路径,和/或java.nio.file
接口和类的各种function。
你也可以使用。
如果你使用/
那么你只需要一个斜杠。
如果使用\
,则需要使用\\
。 也就是说,你需要逃脱它。
您还可以使用java.nio.Path
类的resolve()
方法将目录/文件添加到现有路径。 这避免了使用向前或向后斜线的麻烦。 然后,您可以通过调用toAbsolutePath()
方法,然后调用toString()
来获取绝对路径
SSCCE:
import java.nio.file.Path; import java.nio.file.Paths; public class PathSeperator { public static void main(String[] args) { // the path seperator for this system String pathSep = System.getProperty("path.separator"); // my home directory Path homeDir = Paths.get(System.getProperty("user.home")); // lets print them System.out.println("Path Sep: " + pathSep); System.out.println(homeDir.toAbsolutePath()); // as it turns out, on my linux it is a colon // and Java is using forward slash internally // lets add some more directories to the user.home homeDir = homeDir.resolve("eclipse").resolve("configuration"); System.out.println("Appending more directories using resolve()"); System.out.println(homeDir); } }
你应该使用/
例如C:/ User / …