Java 正斜杠还是反斜杠?

Java 正斜杠还是反斜杠?,java,text,file-io,slash,Java,Text,File Io,Slash,我希望将文本文件写入和读取(分别)与我的程序不同的目录。当我指定要写入或读取的目录时,是否应该使用正斜杠或反斜杠来标识文件路径?您可以使用其中一种 如果使用/,则只需要一个斜杠。 如果使用\,则需要使用\\。也就是说,你需要逃避它 您还可以使用java.nio.Path类的resolve()方法将目录/文件添加到现有路径。这避免了使用前斜杠或后斜杠的麻烦。然后,您可以通过调用toabsolutionPath()方法,然后调用toString() SSCCE: import java.nio.fi

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

您可以使用其中一种

如果使用
/
,则只需要一个斜杠。
如果使用
\
,则需要使用
\\
。也就是说,你需要逃避它

您还可以使用
java.nio.Path
类的
resolve()
方法将目录/文件添加到现有路径。这避免了使用前斜杠或后斜杠的麻烦。然后,您可以通过调用
toabsolutionPath()
方法,然后调用
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);

    }
}  
我从来没有在任何地方找到它的文档,但是JDK类允许您使用斜杠,不管您是否在Windows上。(您可以在JDK源代码中看到这一点,它在其中显式地为您转换路径分隔符。)

正式-当然在您正在进行的任何UI中-您应该使用
文件.separator
,该文件可通过
System.getProperty
获得(标准系统属性列表已记录在案):

…也可以通过
静态
字段,将其作为(和)提供


您还可以使用的各种功能组合和拆分路径,和/或中接口和类的各种功能。

使用前斜杠将使其独立于系统。为了简单起见,我坚持这一点

如果要向用户显示路径,请考虑使用。你最好不要让那些Windows用户感到惊讶。他们很紧张。

你应该使用/


例如C:/User/…

使用
/
使应用程序独立于操作系统。不要将路径硬编码到程序中,使其独立于安装。@LittleChild:谢谢,添加了一条关于
java.nio.file
的注释。我相信您可能是想参考
System.getProperty(“file.separator”)
(在UNIX上返回一个
/
),而不是
System.getProperty(“path.separator”)
(在UNIX上返回一个
)+1我一直忘了
java.io.File.separator
(和
separatorChar
)。@T.J.Crowder。更不用说
pathselector
pathselectorchar
)@Paul:,但这些是类路径,而不是文件路径。如果您回答了为什么,您的答案会有很大的改进。有时需要反斜杠,但出于可移植性的考虑,对于公共共享代码,最好避免使用反斜杠。根据我的经验,它很少有用或必要,即使在Windows上开发时也是如此。
String sep = System.getProperty("file.separator");