3

特定のディレクトリを圧縮するJavaアプリケーションがあります。特殊文字 (ウムラウト - ä、ö など) を含むファイルは省略されます。デバッグは、ファイルが存在しないため省略されていることを示しました

if(file.exists()) {
  //zip it
} else {
  System.err.println("file " + file.getAbsolutePath() + " does not exist!");
}

事は-私はファイルオブジェクトを取得します

File[] files = directory.listFiles();

そしてそれらを繰り返します。

for(File file : files) {
  if(file.exists()) {
    //zip file
  } else {
    System.err.println("...");
  }
}

私が見たのは、の代わりにfile.getAbsolutePath()次のパスを示していることです。/tmp/myspecialChar?File.txt/tmp/myspecialCharÖFile.txt

ファイルを取得する方法についてのアイデア。残念ながら、すべての特殊文字は「?」に変換されます。そのため、マッピングを実装できません。リスト名も「?」を返します。正しい特殊文字の代わりに。

忘れる前に - JVM のバージョンは 1.6.31 です。

4

2 に答える 2

2

file.encodingJVMのシステム プロパティを設定する必要があります

-Dfile.encoding=UTF-8

これは、起動時にjavaパラメーターとして実行する必要があることに注意してください。System.setProperty()値 (ホスト OS から取得される) はそれまでに既にキャッシュされているため、後で a を使用しても役に立ちません。

于 2013-08-13T09:47:47.947 に答える
0

それが機能するかどうかはわかりませんが、使用してみてください:

Ä, ä -> \u00c4, \u00e4
Ö, ö -> \u00d6, \u00f6
Ü, ü -> \u00dc, \u00fc

適切な場所で äöü を \u に置き換えます。例:

for (File file : files) {
    String newfilename = file.getName().replace('Ü', \u00dc);
}

うまくいかなかったらごめんなさい!

于 2013-08-13T09:38:00.690 に答える