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