2016-11-12 5 views
0

Windowsで実行しているときに、* ixファイルのパス文字列を処理する最適な方法は何ですか?WindowsでのUNIXパスの処理

Paths.get()を使用すると、Filesystem.getDefault()が呼び出され、Windowsパスのように処理されます。構文解析のように見えますが、かなり初歩的ですが、もちろんtoStringでは間違ったパス区切りが使用されます。

何とか手動でLinuxFileSystemをロードできますか?または、代わりにcommons-ioパーサーを使用する必要がありますか?

+1

Windows 2000以降のすべてのWindowsシステムでは、APIのファイル区切り文字として '/'と ''\'を受け入れると信じています。したがって、Windows上のすべてが同じドライブ上にある限り、何もする必要はありません。これでうまくいかない場合は、うまくいかないことと達成したいことの例を挙げてください。 – ajb

+0

私は基本的なテストでは解析していると言いましたが、出力には間違ったパス区切りが使用されています。私は、Windowsのパーサーが* ixのパス名で合法であるバックスラッシュにいくつかの問題があると思われます。 – Ian

+0

1つのJDKディストリビューションがUnixまたはWindowsのいずれかに向いているので、疑いがあります。私が考える唯一のチャンスは、UnixFileSystemProviderのオープンソース配布を探し、アプリケーションのランタイムにインポートすることです。 UnixFileSystemProviderは、パス区切りだけでなく、基盤となるOSの低レベルの詳細を扱うため、その場合でも疑問があります。 –

答えて

1

何とか手動でLinuxFileSystemをロードできますか?

1つのJDKディストリビューションがUnixまたはWindowsのいずれかに向いているため、疑いがあります。私が考える唯一のチャンスは、UnixFileSystemProviderのオープンソース配布を探して、アプリケーションのランタイムにインポートすることです。

FileSystemProviderクラスでは、パス区切りだけでなく、基礎となるOSの低レベルの詳細を扱うため、100%で動作するかどうか疑問があります。 Windowsファイルシステムとの互換性があります。

0

@Little Santiの質問に対するコメントは、実際は答えです。私が実行した場合:

for (FileSystemProvider provider: FileSystemProvider.installedProviders()) { 
    System.out.println(provider.getClass().getName()); 
} 

は私が取得:

sun.nio.fs.WindowsFileSystemProvider 
com.sun.nio.zipfs.ZipFileSystemProvider 

私はこれを正しく解釈するならば、それは私がWindowsでLinuxFileSystemパスメソッドを使用することはできませんが、代わりにコモンズ-IOを使用する必要がありますを意味します。

関連する問題