Apache Commons VFS庫似乎無法支持特殊的Windows文件夾(網絡,近期,計算機,庫等)。獲取特殊文件夾在Apache Commons中工作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}
在得到這個工作的任何幫助,將不勝感激。它看起來很可能是庫中的一個bug。希望有人知道黑客或這樣的工作。
編輯: 我相信我是近身的時候我創建新的快捷方式
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 2010-11-24 07:48:43
我只是不明白標題和問題本身之間的關係。當您使用sun.awt.shell時,Commons VFS的軟件包是org.apache.commons.vfs。 – AlexR 2010-11-24 07:55:59