10

私は使っている

URL res = this.getClass().getClassLoader().getResource(dictionaryPath);
String path = res.getPath();
String path2 = path.substring(1);

メソッド getPath() の出力は次のように sth を返すためです。

 /C:/Users/......

そして私はこれが必要です

 C:/Users....

一部の外部ライブラリは、先頭のスラッシュまたは先頭の file:/ などを使用することを拒否しているため、以下のアドレスが本当に必要です。

toString() toExternalPath() などのURLのほとんどすべてのメソッドを試し、URIで同じことを行いましたが、必要なように返されるものはありませんでした。(なぜスラッシュを先頭に置くのか、まったくわかりません)。

私のマシンでは、最初の文字を消去するだけで問題ありません。しかし、友人がLinuxで実行しようとしましたが、アドレスが異なるため、動作しません...

そのような問題で何をすべきですか?

4

4 に答える 4

9

URL を URI に変換し、それを File コンストラクターで使用します。

URL res = this.getClass().getClassLoader().getResource(dictionaryPath);
File file = new File(res.toURI());
String fileName = file.getPath();
于 2014-09-19T08:23:22.460 に答える
4

UNIX パスにドライブ文字が含まれていないことが想定されている限り、次のことを試すことができます。

URL res = this.getClass().getClassLoader().getResource(dictionaryPath);
String path = res.getPath();
char a_char = text.charAt(2);
if (a_char==':') path = path.substring(1);
于 2013-07-05T13:30:11.220 に答える
2

URI に変換してから使用しますPaths.get()

URL res = this.getClass().getClassLoader().getResource(dictionaryPath);
String path = Paths.get(res.toURI()).toString();
于 2020-03-27T17:00:57.623 に答える
0

文字列を取得したら、おそらく文字列をフォーマットすることができます。

このようなもの:

path2= path2[1:];

于 2013-07-05T13:21:47.363 に答える