使用保存出错无法写入文件

Posted

技术标签:

【中文标题】使用保存出错无法写入文件【英文标题】:error using save can't write file 【发布时间】:2014-03-05 08:28:25 【问题描述】:

我在 matlab 中遇到了这个非常奇怪的错误。当我尝试运行命令时

save(fullfile('filepath','filename'),'var','-v7');

我收到错误消息,

error using save can't write file

但是当我尝试时

save(fullfile('filepath','filename'),'var','-v7.3');

一切正常。该变量在工作区占用了一些空间,165MB,但我想这里的大小应该不是问题。有谁知道为什么保存在v7 中不起作用?

想要确认变量大小的,我会添加whos信息,

Name      Size                Bytes  Class     Attributes
myName    1x1             173081921  struct              

BR/帕特里克

编辑

我尝试保存的变量是一个包含大量字段的结构。我试图保存一个大小为 800 mb 的 3 维矩阵,它没有问题。

【问题讨论】:

遗憾的是,这也不起作用,matlab 甚至无法识别该选项。但是,使用选项 -v7 保存变量 a = 1 也很有效。 这个怎么样:save file.mat a -v7 ?这行得通吗? 很遗憾,没有。但是'save(fullfile('filepath','filename'),'var','-v7');save file.mat a -v7 都创建了一个文件,但是该文件在第 2 行已损坏,我仍然收到错误消息。 你的matlab版本是多少? 我的版本是MATLAB R2013a 【参考方案1】:

这与您的问题不完全匹配,但我在尝试保存为 -v6 格式时收到了相同的错误消息。当不支持变量类型或大小时,Matlab 应该会发出错误:

help save
...
If any data items require features that the specified version does not support, MATLAB does not save those items and issues a warning. You cannot specify a version later than your version of MATLAB software.

Matlab 的错误检查似乎并不完美,因为在某些情况下(取决于 Matlab 版本和特定的变量类型)会完全失败,并带有这个不太有用的错误消息:

Error using save
Can't write file filename.mat.

例如,在 Linux 的 Matlab r2015b 中使用“-v6”选项保存包含某些 unicode 字符的字符串会产生错误,但在 Windows 中的 Matlab r2016a 不会。这是我的 Matlab r2015b 会话的输出:

>> A=char(double(65533))
A =
?
>> save('filename.mat','-v6','A')
Error using save
Can't write file filename.mat. 

如果没有要测试的特定变量,但看到错误消息匹配,我建议删除部分数据结构,直到它保存以隔离导致它失败的变量。

【讨论】:

情况并非如此。这么多年过去了,我只记得很模糊。我真的不记得我是如何解决它的,但我想我设法以某种方式更改了版本。尽管如此,当我遇到这个问题时,相同的数据可能会起作用,也可能会出错。我相信格式 v6 存在一些已知问题。

以上是关于使用保存出错无法写入文件的主要内容,如果未能解决你的问题,请参考以下文章

文件上传 WCF WEB API(预览版 6)出错:无法向缓冲区写入超过配置的最大缓冲区大小的字节数:65536

写入控制文件时出错 ORA-00221 oracle

“无法识别的类型'员工'。忽略。C:/ .....”从.xml读取输入并将输出写入.xls文件+ perl时出错

读取和写入文件时出错(Java)[关闭]

“无法写入配置文件。”Magento Connect Manager 1.9.3.2出错

无法写入文件名并同时单击“保存”按钮...VBA代码