Ubuntu下MATLAB写入非当前目录报invalid permission错误求助
解决MATLAB在Ubuntu下写入~/newFolder时的权限错误
你的问题根源其实是**fopen函数的调用方式错误**,而不是单纯的文件夹权限问题——这也是为什么你修改权限后还是报错的原因。下面一步步帮你解决:
1. 错误原因分析
你当前代码里的fopen(folder,'newText.txt','w')参数传递是错的:MATLAB的fopen要求第一个参数是完整的文件路径,而不是把文件夹和文件名分开作为两个独立参数。你现在的写法相当于尝试把~/newFolder这个文件夹当作文件来打开写入,这自然会触发"invalid permission"错误——因为文件夹本身不能以写入文件的方式被打开。
2. 修正后的代码
你需要先把文件夹路径和文件名拼接成合法的文件路径,推荐用MATLAB的fullfile函数处理路径拼接(跨系统兼容),同时加上文件夹存在性检查和路径解析:
folder = '~/newFolder'; % 展开波浪号为绝对路径,确保MATLAB正确识别用户主目录 folder = expanduser(folder); % 检查目标文件夹是否存在,不存在则创建 if ~exist(folder, 'dir') mkdir(folder); end % 拼接完整的文件路径 file_path = fullfile(folder, 'newText.txt'); % 打开文件并检查是否成功 file_id = fopen(file_path, 'w'); if file_id == -1 error('无法打开文件,请确认路径是否正确、文件夹权限是否足够'); end % 写入内容并关闭文件 fprintf(file_id, 'hi'); fclose(file_id);
3. 额外注意事项
- 为什么
chmod 0777 -R ~/newFolder没用?因为你之前的代码根本没正确指向目标文件,而是错误地操作了文件夹本身,所以权限修改对这个错误没有帮助。 - 用
expanduser处理~是个好习惯:MATLAB对波浪号的解析有时候和shell不完全一致,展开成绝对路径可以避免很多路径解析问题。 - 加入
fopen返回值检查(file_id == -1):如果后续还有权限问题,这个检查能帮你快速定位是路径问题还是真的权限不足。
内容的提问来源于stack exchange,提问作者Mo Sani
相关产品推荐
相关产品推荐

