我正在开发一个必须在不同操作系统上工作的 GUI:Windows、Unix、Mac……我想知道如何通过按下按钮来打开目录?
是否有任何通用命令可以在默认文件管理器中打开它?(Mac 的 Finder、Windows 的资源管理器、带有 GNOME 的 Unix 的 Nautilus 等)
我不想只显示所选文件夹的信息(ls、cd 和 dir 对我没有帮助)。
先感谢您,
本杰明。
我正在开发一个必须在不同操作系统上工作的 GUI:Windows、Unix、Mac……我想知道如何通过按下按钮来打开目录?
是否有任何通用命令可以在默认文件管理器中打开它?(Mac 的 Finder、Windows 的资源管理器、带有 GNOME 的 Unix 的 Nautilus 等)
我不想只显示所选文件夹的信息(ls、cd 和 dir 对我没有帮助)。
先感谢您,
本杰明。
用于uigetdir
打开对话框以选择文件夹
如果您坚持打开实际的文件管理器(而不是从 Matlab 访问的跨平台 Java 对话框之一),您可以使用如下内容:
% Just as an example; current dir
myDir = '.';
% Windows PC
if ispc
C = evalc(['!explorer ' myDir]);
% Unix or derivative
elseif isunix
% Mac
if ismac
C = evalc(['!open ' myDir]);
% Linux
else
fMs = {...
'xdg-open' % most generic one
'gvfs-open' % successor of gnome-open
'gnome-open' % older gnome-based systems
'kde-open' % older KDE systems
};
C = '.';
ii = 1;
while ~isempty(C)
C = evalc(['!' fMs{ii} ' ' myDir]);
ii = ii +1;
end
end
else
error('Unrecognized operating system.');
end
if ~isempty(C)
error(['Error while opening directory in default file manager.\n',...
'The reported error was:\n%s'], C);
end
请注意,大多数 Linux 发行版最接近默认文件管理器的是将目录传递给XXX-open
命令。这吸引了许多 Linux 用户,但肯定不是所有用户。为了获得更好的 Linux 支持,您必须编写更多复杂的系统命令来查找默认文件管理器。
但我会把它留给你:)