正斜杠还是反斜杠?

我期待着(分别)与我的程序不同的目录编写和读取文本文件。 当我指定要写入或读取的目录时,我应该使用正斜杠还是反斜杠来标识文件路径?

使用正斜杠将使其与系统无关。 为了简单起见,我坚持这一点。

如果您显示用户的路径,请考虑使用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 / …