Как назначить текущий каталог для папки dropbox
Я пишу код Matlab и хочу иметь доступ к нему с разных рабочих столов, поэтому я храню все в Dropbox. Мне интересно, есть ли способ сообщить Matlab текущий путь без изменения кода каждый раз, когда я использую другую машину. Например, в моем коде есть следующая строка, но я хотел бы сделать ее более общей для использования на каждом компьютере. Как я могу сказать MATLAB правильный путь к моему файлу?
[num,txt,raw]= xlsread('C:\Users\Zahra\Documents\dropbox \data.xlsx');
2 ответа
Решение
Папка Dropbox закодирована в base64 в файле host.db в папке, которая находится в AppData
папка в винде. Я не уверен, если это кроссплатформенный, но работает на моей системе и моем Dropbox.
%http://www.mathworks.com/matlabcentral/fileexchange/15886-get-application-data-directory/content/getapplicationdatadir.m
%http://www.mathworks.com/matlabcentral/fileexchange/12907-xmliotools/content/base64decode.m
f = getapplicationdatadir('dropbox', 0, 0);
hostdb = fopen([f '/host.db']);
%skip line
fgetl(hostdb);
s = fgetl(hostdb);
path = sprintf('%s', base64decode(s));
cd(path);
Вы можете использовать массив ячеек, содержащий ваши пути DropBox, и протестировать их с помощью isdir
встроенный в cellfun
:
dropbox_path = {'/Users/x/Dropbox/';
'/Users/xx/Dropbox/';
'/Users/xxx/Dropbox/'};
dropbox_path = dropbox_path{cellfun(@isdir,dropbox_path)}
Тогда прочитайте ваш файл
[num,txt,raw]= xlsread([dropbox_path 'data.xlsx']);