如何在Java中获取Linux文件夹和文件的图标和名称?

6

我正在使用Java创建一个文件夹和文件的树形结构。以下代码可以在Windows和OSX上获取系统图标和名称:

new JFileChooser().getIcon(File f);
new JFileChooser().getName(File f);

有没有可能获取UNIX系统的图标和名称?系统命令也可以。谢谢。

问题:我怀疑这将取决于环境 - 是Gnome?KDE?XFCE?另一个不太普及的环境? 因此,跨桌面解决方案需要大量的工作和维护 - 我不认为Sun会这样做。 但是不能确定。 - Jean Hominal
最普遍的显示管理器的解决方案足矣。 - André
2个回答

0

我没有测试过,但这段代码应该在大多数系统上都能正常工作:

FileSystemView view = FileSystemView.getFileSystemView();
Icon icon = view.getSystemIcon(file);

1
不行。我已经尝试过了。它只会返回一些 Windows 系统的图标,对于 OSX 和 Unix,你将得到 UI 的默认目录和文件夹图标。所以我转而使用 new JFileChooser().getIcon(File f),它可以返回 Windows 和 OSX 的文件和文件夹图标。 - André

0

您可以随时获取您正在工作的系统的名称,Java允许您执行本地执行并捕获其结果(命令行,因此对于Unix版本,Runtime.exec(“uname-a”);),然后解析输出流中的结果。

话虽如此,在unix内核之上有许多不同的GUI层的实现,并且没有一种标准的方法来检索文件类型与图标图像之间的映射。 您可以针对窗口管理器制定特定的解决方案,但需要根据使用的wm更改算法。


目前正在开发一个特定于窗口管理器的实现。在用户336851的链接中提到了xdg-mime,我正在尝试使用它。到目前为止,我只得到了一个桌面文件(没有绝对路径,只有名称)。有什么想法可以继续吗? - André

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