You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:03:46