是什么原因导致在MATLAB无效的文件标识符?(What causes an invalid fil

2019-06-24 11:01发布

我有我可以发誓MATLAB脚本工作得很好我最后一次用它(一年前)。 现在,我得到这个错误:

Invalid file identifier.  Use fopen to generate a valid file identifier.

如果我理解正确的话,它未能找到或打开(?)在脚本中的其他地方指定的文件。 这是正确的吗? 如果是这样,是什么引发的呢?

Answer 1:

fid (文件标识符)是输出fopen 。 这是一个整数,但没有相关的文件永久。 您需要使用fopen获得fid 。 在我看来,您正在使用不正确fid在一些文件相关的I / O命令(文件标识符),如freadfscanffclose 。 不成功fopen给出了fid-1 。 对于任何有效的普通文件成功fopen会给fid3以上的整数。

然而,没有任何代码,它不可能说在哪里或什么错误或误差。 你可以使用MATLAB的调试器来单步从相关代码fopen (设置断点存在并运行程序),直至相关fclose ,看看是否fid (或任何变量名使用的文件标识符),或为您的文件标识符的任何数据结构(如果在你的代码的多个文件标识符)相关之间的任何一点变化fopenfclose



Answer 2:

我加入的许可选项fopen解决了这个问题我自己。 正如你在看到http://www.mathworks.se/help/matlab/ref/fopen.html ,FOPEN语法是:

fileID = fopen(filename,permission)

可能的权限,例如有:“R”(默认)| 'W' | 'A' | 'R +' | 'W +' | 'A +' | ...

“R” - 读打开文件。

“W” - 开启或写创建新的文件。 放弃现有的内容,如果有的话。

“A” - 打开或创建写入新文件。 数据追加到文件的末尾。

“R +” - 为读写打开文件。

“W +” - 打开或创建用于读取和写入新文件。 放弃现有的内容,如果有的话。

“A +” - 为读写打开或创建新的文件。 数据追加到文件的末尾。

...

如果我使用的fopen擅自选项,或者如果我使用“R”(默认设置)选项,会的fopen返回-1,这是错误。 我的成功与此:

fid=fopen('tmp.txt', 'w');
fid=fopen('tmp.txt', 'a');


Answer 3:

我有这个问题。 原来,我试图写入文件过大(我没有足够的自由空间来容纳它)。 然而,该计划并没有失败,直到调用FCLOSE。 很混乱!

尽量腾出一些空间,或者写一个非常小的文件,来测试这个诊断。



Answer 4:

试图打开ASF工具箱演示时,我遇到了同样的问题。 Matlab的运行作为管理员(右键点击打开)似乎解决了这个问题对我来说。



Answer 5:

fopen失败可能是因为MATLAB没有权限读/写您指定的文件。

尝试(视操作系统而定),打开一个文件在你/ MATLAB拥有所有权利的位置。



Answer 6:

我已经使用fopen许可和同样的错误就出来了。 不过,我开始MATLAB的管理和采取照顾的问题。



Answer 7:

我在Excel中,结果FOPEN打开的文件返回-1。 带我永远找到这样一个小问题。



Answer 8:

与开头正斜杠的路径可能会导致同样的错误。

filename = '/data/myfile.txt';

抛出这个错误,而

filename = 'data/myfile.txt';

不产生错误。



Answer 9:

试图创造一个不存在的目录中的文件时,也发生了。 尝试mkdir('folderName')内,MATLAB或刚刚创建的目录事前。



Answer 10:

对于我的情况,我已经检查过了,但错过了一个简单的步骤。

请选择“浏览文件夹”,并浏览你的当前文档的位置您运行“的fopen”代码之前。



Answer 11:

它也发生在一个脚本试图读取超出文件的末尾。



文章来源: What causes an invalid file identifier in MATLAB?
标签: matlab fopen