如何在 OS X 中使用 Java 找到用户的“文档”文件夹?
Posted
技术标签:
【中文标题】如何在 OS X 中使用 Java 找到用户的“文档”文件夹?【英文标题】:How do I find the user's 'Documents' folder with Java in OS X? 【发布时间】:2009-02-20 00:37:39 【问题描述】:我想在用户的“文档”文件夹中创建一个目录,但到目前为止我只知道如何获取用户的主目录:
javax.swing.JFileChooser fr = new javax.swing.JFileChooser();
javax.swing.filechooser.FileSystemView fw = fr.getFileSystemView();
this.userDirectory = fw.getDefaultDirectory();
在 Windows 中,上面的代码返回“我的文档”目录,这很好,这是新文档应该去的地方。在 OS X 上,它只返回主目录。
将“文档”添加到返回的路径会导致本地化问题。
我该怎么做?
【问题讨论】:
***.com/questions/272544/… 讨论了正确的 Objective-C 方法 - 我不知道如何/是否可以在 Java 中完成。 【参考方案1】:System.getProperty("user.home")+File.separator+"Documents";
不用担心本地化,看:
macb:Documents laullon$ pwd
/Users/laullon/Documents
我的 OS X 是西班牙语的。
【讨论】:
事实证明,OS X 本地化是通过更改显示给用户的名称来工作的,而不是实际的文件名。下面参考。 developer.apple.com/documentation/MacOSX/Conceptual/… 让生活变得轻松,但我不确定我是否非常喜欢它 :) 最好和最安全的答案是使用 Apples FileManager【参考方案2】:您想使用 Apple 的 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)
);
Documentation
【讨论】:
谢谢,这对我有帮助 - 我需要它来查找用户的音乐文件夹。扩展不是下载;它位于 Mac OS X 中捆绑的 JRE 中。因此,如果您有必须在其他平台上编译的代码,则必须反思地编写此代码。最后,可以在walteriankaye.com/as/foldertypes.html 找到对所有文件夹类型的引用 或者你可以下载一个扩展的存根,然后创建一个包装类,它只有在平台是 osx 时才会被调用,这样可以避免编写反射代码。【参考方案3】:在 mac(据我所知所有最近的 10.x 变体)上,“我的文档”目录位于(从根目录): /Users//Documents 因此它位于用户主目录中的“Documents”子目录中。
【讨论】:
以上是关于如何在 OS X 中使用 Java 找到用户的“文档”文件夹?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 HTML 文本区域中找到光标位置(X/Y,而不是行/列)? [复制]
如何在Mac OS X上面指定Eclipse启动时用指定的某一版本JDK