如何在OS X中使用Java查找用户的“文档”文件夹?

8

我想在用户的“文档”文件夹中创建一个目录,但到目前为止,我只知道如何获取用户的主目录:

javax.swing.JFileChooser fr = new javax.swing.JFileChooser();
javax.swing.filechooser.FileSystemView fw = fr.getFileSystemView();
this.userDirectory = fw.getDefaultDirectory();

在Windows中,上述代码返回“我的文档”目录,这很好,那里是新文档应该存放的地方。在OS X中,它只返回主目录。
将“文档”添加到返回的路径中会导致本地化问题。如何解决?

适当的Objective-C方法在https://dev59.com/iHVC5IYBdhLWcg3whBWj上进行了讨论 - 如何/是否可以在Java中完成,我不知道。 - nobody
3个回答

9
您想要使用苹果的eio.FileManager扩展:
    static public String documentsDirectory()
            throws java.io.FileNotFoundException {
        // From CarbonCore/Folders.h
        final String kDocumentsDirectory = "docs";
        return com.apple.eio.FileManager.findFolder(
            com.apple.eio.FileManager.kUserDomain,
            com.apple.eio.FileManager.OSTypeToInt(kDocumentsDirectory)
        );
    }

文档


2
谢谢,这对我很有帮助 - 我需要它来查找用户的音乐文件夹。扩展名不是下载;它在Mac OS X中捆绑的JRE中。因此,如果您有必须在其他平台上编译的代码,则必须以反射方式编写此代码。最后,可以在http://walteriankaye.com/as/foldertypes.html找到所有文件夹类型的参考。 - Dan Gravell
或者您可以下载扩展的存根,然后创建一个包装器类,仅在平台为osx时调用该类,这样可以避免编写反射代码。 - Paul Taylor

9

System.getProperty("user.home")+File.separator+"Documents";

不用担心本地化问题,看这里:

macb:Documents laullon$ pwd
/Users/laullon/Documents

我的OS X是用西班牙语显示的。


2
事实证明,OS X本地化是通过更改显示给用户的名称而不是实际文件名来实现的。请参考下面的链接。http://developer.apple.com/documentation/MacOSX/Conceptual/BPInternational/Articles/LocalizingPathnames.html#//apple_ref/doc/uid/20002141-BBCFJBFB - oldbeamer
让生活变得轻松,但我不确定我非常喜欢它 :) - Tony Edgecombe
最好且最安全的做法是使用苹果的FileManager。 - Paul Taylor

-1

在Mac上(据我所知,所有最近的10.x变体),“我的文档”目录位于(从根目录开始):
/Users/<用户名>/Documents
因此,它位于用户主目录中的“文档”子目录中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接