私は2本の弦を持っています。フォルダーの絶対 (または相対) パスに名前を付けます。他の名前は、安全でない可能性のある文字を含むファイル名です。
String folder = "C:\a\b\c\dir";
Sting file = "file name: contains-unsafe_characters?" + ".txt"
これらを文字通り文字列にまとめて、次の形式で粉砕したいと思います。
String absPath = folder + SYSTEM_INDEPENDENT_PATH_SEPERATOR + convertToPercentOctal(folder);
現在、これを実行しようとするアプローチはおそらく 100 万通りあります。
UriBuilder folderBuilder = UriBuilder.fromPath(folder);
UriBuilder fileBuilder = UriBuilder.fromPath(file);
URI completeFileName = folderBuilder.build().resolve(fileBuilder.build());
また:
URI completeFileName = UriBuilder.fromPath(folder).path(file).build();
等
ファイル名に:が含まれている可能性があるため、コードの最初のブロックは失敗します。その場合、UriBuilder はそれをオプションのscheme:として解析しようとします。2 番目の方法は、システム依存の「/」文字 で区切られた %8 進数表記に変換された前半と後半を返すため、失敗します。
2 つの文字列を連結し、結果を書き込み可能なファイル名に変換し、ファイルの作成に使用できる有効な URI を返す方法はありますか?