2

我正在开发一个必须在不同操作系统上工作的 GUI:Windows、Unix、Mac……我想知道如何通过按下按钮来打开目录?

是否有任何通用命令可以在默认文件管理器中打开它?(Mac 的 Finder、Windows 的资源管理器、带有 GNOME 的 Unix 的 Nautilus 等)

我不想只显示所选文件夹的信息(ls、cd 和 dir 对我没有帮助)。

先感谢您,

本杰明。

4

2 回答 2

2

用于uigetdir打开对话框以选择文件夹

于 2013-05-29T08:37:18.360 回答
1

如果您坚持打开实际的文件管理器(而不是从 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 支持,您必须编写更多复杂的系统命令来查找默认文件管理器。

但我会把它留给你:)

于 2013-05-29T09:05:12.237 回答