繁体   English   中英

获取特殊文件夹以在Apache Commons VFS中工作

[英]Getting Special folders to work in Apache Commons VFS

Apache Commons VFS库似乎无法支持特殊的Windows文件夹(网络,最近,计算机,库等)。

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打开一个空文件夹。

这些文件没有真正的支持。 主要问题是Java File对象都没有正确处理它们( new File("::{20D04FE0-3AEA-1069-A2D8-08002B30309D}").toURI().toString()没有正确地逃避冒号)也不是Java或VFS了解::作为绝对文件系统根目录。 因此,您无法将它们转换为URI(resolveFile()所需),以保持Windows识别的特殊属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM