Apache Commons VFSライブラリは、特別なWindowsフォルダ(ネットワーク、最近の、コンピュータ、ライブラリなど)をサポートできないようです。Apacheコモンズで特別なフォルダを使用するVFS
File[] cbFolders = (File[])sun.awt.shell.ShellFolder.get("fileChooserComboBoxFolders");
、その後、そのようなFileObjectsに変換:
for(File f: cbFolders){
fileObjArray.add(mgr.resolveFile(f.getPath()));
}
それだけでは動作しませんし、あなたが得るすべては、その名のパス名です。これらのファイルの
パスが::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
のように、この作業を得ることに任意の助けをいただければ幸いです。これは、おそらくライブラリのバグのようです。うまくいけば、誰かがハックなどを知っていてうまく動作することを望むでしょう。
編集: 私は新しいショートカットに
try{
final File[] cbFolders = (File[])sun.awt.shell.ShellFolder.get("fileChooserComboBoxFolders");
String name = "";
File[] systemFiles = new File[cbFolders.length];
i =0;
for(File f: cbFolders){
name = f.getName();
if(name.startsWith("::{")){
name = name.substring(2);
System.out.println("converting: " + name);
String fileName = fileSystemView.getSystemDisplayName(f);
File file = new File("C:\\Users\\Daniel\\Desktop\\" + fileName + "." + name);
boolean success = false;
success = file.mkdir(); //returns false even if it works,
systemFiles[i] = file;
}else
systemFiles[i] = f;
i++;
}
list = new ArrayList<File>(Arrays.asList(systemFiles));
}catch(final Exception e){
...
}
を作成したとき、私はそれが正しいアイコンと名前が表示され、Windowsのエクスプローラ上で、それは正しく開きますが、まだVFSと、それは空のフォルダを開き、近くにあったと考えています。
うわー!私はShellFolderクラスを使ったことがありません。どうやって分かったの?パラメータ "fileChooserComboBoxFolders"を送信する必要があることをどのように知っていましたか?私はあなたに答えを与えるのではなく、探求を求めていることを申し訳なく思っています。私は答えはありませんが、問題は私には面白いです。 – AlexR
私はちょうどタイトルと質問自体の間の関係が何であるか分かりません。 Commons VFSのパッケージは、sun.awt.shellを使用している間はorg.apache.commons.vfsです。 – AlexR
"どうやってそれを見つけましたか?" Googleでのハードコア検索:) "fileChooserComboBoxFolders"パラメータを送信する必要があることをどのように知っていましたか? Javaソースコード。 「タイトルと質問自体との関係は何か分かりません」 VFSに特別なファイルをサポートさせたいのですが、デフォルトではこれらの特別なファイルのパス名は扱えません。 – Zammbi