【问题标题】:How can I associate a file type in mac within Java code?如何在 Java 代码中关联 mac 中的文件类型?
【发布时间】:2012-01-23 21:40:45
【问题描述】:

如何在 java 代码中关联 mac 中的 .vlan 等文件类型?

Runtime.getRuntime().exec("defaults write com.apple.LaunchServices LSHandlers -array-add 
\"<dict><key>LSHandlerContentTag</key>
<string>.vlan</string><key>LSHandlerContentTagClass</key>
<string>public.filename-extension</string><key>LSHandlerRoleAll</key>
<string>org.category.program</string></dict>\"");

【问题讨论】:

  • 嗯?你能用问题的形式重新表述一下吗?把它和什么联系起来?
  • 好吧,我的应用程序应该是跨平台的,所以我已经通过 ftype 和 assoc 命令来覆盖 Windows 部分,它工作得很好,但是,现在我需要覆盖同一个文件mac的类型。请记住,我对mac环境的了解非常有限
  • 重复,已回答here
  • 但这个答案与 Java 无关。我正在从 Java 中寻找解决方案。
  • @Sam Runtime.getRuntime().exec("...");。我认为你应该在问之前先搜索一下。

标签: java


【解决方案1】:

如果应用程序。有一个 GUI,使用 Java Web Start 部署它并在 JNLP(启动)文件中声明文件扩展名/类型。这是一个demo. of the JNLP API file services,它应该能够将.zzz文件的text/sleepytime内容类型与(小)应用程序相关联。

支持在 Windows、OS X & *nix 上为文件类型添加关联(适用于所有权限,以及沙盒应用。(提示后者)。

【讨论】:

    【解决方案2】:

    试试这个:

    Runtime.getRuntime().exec(
        new String[] {
            "defaults", 
            "write", 
            "com.apple.LaunchServices", 
            "LSHandlers", 
            "-array-add",   
            "<dict><key>LSHandlerContentTag</key><string>.vlan</string><key>LSHandlerContentTagClass</key><string>public.filename-extension</string><key>LSHandlerRoleAll</key><string>org.category.program</string></dict>"
        }
    );
    

    补充一点,Runtime 的 exec 需要注意 quite some pitfalls

    【讨论】:

      猜你喜欢
      • 2012-02-24
      • 2016-06-11
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 2013-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多