JavaのOS用にとらわれないで、ファイルパス文字列を作るために、クリーンかつ簡単な方法はありますか?

タルンMaganti:

私は、Javaが実行されているものは何でもOSへのいずれかの形式の文字列(例えばUNIX)と隠れ家にかかるクラスを作りました。

enum OperatingSystem {
    WINDOWS,
    LINUX;

    static OperatingSystem initOS() {
        String osName = System.getProperty("os.name");

        switch (osName) {
            case "Windows 8.1":
               return WINDOWS;
            case "Linux":
               return LINUX;
            default:
                return LINUX;
        }
    }

}



public class OSSP {
    public static final OperatingSystem USEROS = OperatingSystem.initOS();


//    Auxilarry methods to return OSAppropriateString
    private static String makeLinuxCompatible(String[] path) {
        return String.join("/", path);
    }

    private static String makeWindowsCompatible(String[] path) {
        return String.join("\\", path);
    }

    public static String getOSSpecificPath(String path) {
        String[] splittedPath = {""}, subpath = {""};
        String finalPath = "";
        if(path.contains("\\")) {
            splittedPath = path.split("\\\\",-1);
        }
        else if (path.contains("/")) {
            splittedPath = path.split("/",-1);
        }

        if (USEROS == OperatingSystem.LINUX) {
            finalPath =  makeLinuxCompatible(splittedPath);
        }
        else if (USEROS == OperatingSystem.WINDOWS) {
            finalPath =  makeWindowsCompatible(splittedPath);
        }
        return finalPath;
    }
}

あなたは小さなコードに取り組んでいると、あなたは多くの場合、それを行う必要があるだろう場合、これは大丈夫です。

しかし、私はプログラムで指定したパスがあるところはどこでも、この関数を挿入する必要があるだろう巨大なGUIコードを持っています。文字列に自動的にOSの特定のようなパスを作成する方法はありますか?

そうでなければパスを取る任意のOS機能が自動的にボンネットの下に応じ変更設定。

ジョープEggen:

使用するパスを持つファイルを

Path path = Paths.get(".../...");
Path path = Paths.get("...", "...");
// path.resolve, relativize, normalize, getFileSystem

このクラスは、の一般化であるFileだけ純粋なファイル・システム・ファイルのためのものです。パスは、その上のzipファイルシステムを使用して.zipファイルのサブディレクトリに指している可能性があります。

設立されたファイルのいずれかが使用できるAPIを使用Path.toFile()してFile.toPath()

Paths.get(受諾のWindowsのPosixの互換性のためにも、非常に汎用性のある/ほか\)。あなたはとにかく正規の正規化されたパスを取得することができます。

path.toRealPath()

古いFileあなたが使用することができます。

String separator = File.separator;

別のを指すことができますパスのファイルシステム

String separator = path.getFileSystem().getSeparator();

一般に、パス名の一部を保存する気の利いたクラスで、ファイルシステム。それはのような多くの側面をカバーして".."

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=202396&siteId=1