如何在java中获取linux文件夹和文件的图标和名称? [复制]

Posted

技术标签:

【中文标题】如何在java中获取linux文件夹和文件的图标和名称? [复制]【英文标题】:How to get the linux folder and file icons and names in java? [duplicate] 【发布时间】:2011-03-03 20:53:15 【问题描述】:

我正在 java 中创建一个文件夹和文件树。 Windows 和 OSX 返回系统图标和名称,代码如下:

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

有没有可能得到unix系统的图标和名称?系统命令也可以。

谢谢。

【问题讨论】:

问题:我怀疑这取决于环境 - 是 Gnome 吗? KDE? XFCE?另一个不太广泛的环境?因此,跨桌面解决方案需要大量的工作和维护——我不认为 Sun 会这样做。但是不能确定。 为最广泛的显示管理器提供解决方案就足够了。 【参考方案1】:

我没有测试,但这段代码应该可以在大多数系统上运行:

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

【讨论】:

没有。已经试过了。它只会返回一些 Windows 系统的图标,对于 OSX 和 unix,你会得到 UI 的默认目录和文件夹图标。所以我切换到 new JFileChooser().getIcon(File f) ,它返回 Windows 和 OSX 的文件和文件夹图标。【参考方案2】:

您始终可以获取您正在使用的系统的名称,Java 允许您进行本机执行并捕获其结果(命令行,因此对于 unix 风格,Runtime.exec("uname -a") ;) 然后在输出流中解析结果。

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

【讨论】:

目前正在研究窗口管理器的具体实现。 user336851 链接中的答案提到了我正在尝试使用的 xdg-mime。到目前为止,我只得到一个桌面文件(没有绝对路径,只有名称)。知道如何继续吗?

以上是关于如何在java中获取linux文件夹和文件的图标和名称? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MacOS 上获取文件类型的图标?

在 Linux 上的 Qt 中获取应用程序图标 URL

如何在 linux 系统的可执行文件上设置图标(或 .ico 文件)?

Android:如何在状态栏中获取电池图标资源 ID 或完整文件路径/名称?

linux 中的cksum如何通过java实现

java怎样获取apk文件icon图标