正斜杠还是反斜杠?

时间:2013-11-04 05:33:20

标签: java text file-io slash

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

4 个答案:

答案 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 /...