18

プログラムのディレクトリとは異なるディレクトリに (それぞれ) テキスト ファイルを読み書きしようとしています。書き込みまたは読み取りを行うディレクトリを指定する場合、ファイル パスを識別するためにスラッシュまたはバックスラッシュを使用する必要がありますか?

4

4 に答える 4

36

スラッシュを使用すると、システムに依存しなくなります。簡単にするために、私はそれに固執します。

java.io.File.separatorユーザーへのパスを表示する場合は、使用を検討してください。Windows ユーザーを驚かせたくないでしょう。彼らはびくびくしています。

于 2013-11-04T05:35:26.410 に答える
17

どこにも文書化されていませんが、JDK クラスでは、Windows を使用しているかどうかに関係なく、スラッシュを使用できます。(これは JDK ソースで確認できます。ここでは、明示的にパス区切り記号を変換しています。)

公式には、そしてもちろんあなたが行っているどのUIでも、file.separator システムプロパティ使用する必要がありSystem.getPropertyます.System.getProperties

String sep = System.getProperty("file.separator");

...そしてフィールド経由でも(および)staticとしても利用できます。File.separatorFile.separatorChar

クラスのさまざまな機能を使用して、パスを結合および分割したり、 のインターフェイスやクラスのさまざまjava.io.Fileな機能を使用したりすることもできますjava.nio.file

于 2013-11-04T05:35:14.857 に答える
5

どちらでも使用できます。

を使用する場合/は、単一のスラッシュのみが必要です。
を使用する場合は\、使用する必要があります\\。つまり、それをエスケープする必要があります。

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);

    }
}  
于 2013-11-04T05:34:58.417 に答える
0

/を使用する必要があります

たとえば、C:/User/...

于 2013-11-04T05:37:36.773 に答える