如果我运行下面的示例代码,我在Matlab中收到无效的文件标识符错误:
for i = 1:99999
fid = fopen('test.txt','w');
fprintf(fid,'%s', 'Hello World!\r\n');
fclose(fid);
delete('test.txt');
end;
???使用==>时出错fprintf中 文件标识符无效。使用fopen生成有效的文件标识符。
有趣的是,如果我减少循环次数,我就不会得到错误。我研究了这个问题,似乎没有导致error(错误的文件路径,损坏的文件,文件不存在,文件已经在使用中)的常见问题是罪魁祸首,因为它可以工作,如果我将循环更改为10而不是99999。
经过进一步研究,Matlab Forum Post,似乎问题可能与配额有关(我认为配额与操作系统有关,操作系统,Windows 10在我的情况下不允许程序写入文件后它们中有一定数量是由同一个程序编写的?)。
如何增加配额?有工作吗?我在Windows 10上使用Matlab 2010a。
我还尝试在管理员模式下运行Matlab但没有成功。
答案 0 :(得分:1)
我假设权限是正确的并且磁盘空间不是问题,但你应该检查fopen的输出以获取更多信息或一些try-catch调用ferror(fid)以获取更多数据(注意没有分号,显然。)
[fid,msg]=fopen('test.txt','w')
如果与配额相关,您应该可以在硬盘驱动器的属性中禁用它,如下图所示(它是西班牙语,但您应该明白这一点)。只需右键单击该单元并访问属性 - >磁盘配额 - >显示配置并禁用它(如果它还没有)。