我希望能够(分别)在与我的程序不同的目录中编写和读取文本文件。当我指定要写入或读取的目录时,我应该使用正斜杠还是反斜杠来标识文件路径?
答案 0 :(得分:23)
使用正斜杠将使其与系统无关。为了简单起见,我坚持这一点。
如果您显示用户的路径,请考虑使用java.io.File.separator
。你宁愿不让那些Windows用户感到惊讶。他们是一个疯狂的人。
答案 1 :(得分:15)
我从来没有在任何地方找到记录,但是无论你是否在Windows上,JDK类都允许你使用斜杠。 (您可以在JDK源中看到这一点,它会为您显式转换路径分隔符。)
正式 - 当然在你正在做的任何用户界面中 - 你应该使用file.separator
system property,这可以通过System.getProperty
获得(标准系统属性列表记录在案{{ 3}}):
String sep = System.getProperty("file.separator");
...也可以通过static
字段获取in the docs for System.getProperties
(和File.separator
)。
您还可以使用File.separatorChar
的各种功能来组合和拆分路径,和/或the java.io.File
class中接口和类的各种功能。
答案 2 :(得分:3)
您可以使用其中之一。
如果您使用/
,则只需要一个斜杠
如果您使用\
,则需要使用\\
。也就是说,你需要逃脱它。
您还可以使用resolve()
类的java.nio.Path
方法将目录/文件添加到现有路径。这避免了使用向前或向后斜线的麻烦。然后,您可以通过调用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);
}
}
答案 3 :(得分:0)
你应该使用/
例如C:/ User /...