matlab中fopen 打开文件或获得有关打开文件的信息
参考:https://ww2.mathworks.cn/help/matlab/ref/fopen.html?searchHighlight=fopen&s_tid=doc_srchtitle
个人认为返回的标识符是一个文件句柄handle, 网上的解释是: MATLAB 保留文件标识符 0
、1
和 2
分别用于标准输入、标准输出(屏幕)和标准错误。
fopen
打开文件或获得有关打开文件的信息
语法
说明
fileID = fopen(
打开文件 filename
)filename
以便以二进制读取形式进行访问,并返回等于或大于 3 的整数文件标识符。MATLAB 保留文件标识符 0
、1
和 2
分别用于标准输入、标准输出(屏幕)和标准错误。
如果 fopen
无法打开文件,则 fileID
为 -1
。
fileID = fopen(
将打开由 filename
,permission
)permission
指定访问类型的文件。
fileID = fopen(
使用 filename
,permission
,machinefmt
,encodingIn
)machinefmt
参数另外指定在文件中读写字节或位时的顺序。可选的 encodingIn
参数指定与文件相关联的字符编码方案。
如果 fopen
打开文件失败,则 [fileID,errmsg] = fopen(___)
还将返回一条因系统而异的错误消息。否则,errmsg
是一个空字符向量。您可以将此语法与前面语法中的任何输入参数结合使用。
fIDs = fopen('all')
返回包含所有打开文件的文件标识符的行向量。为标准输入、输出以及错误而保留的标识符不包括在内。向量中元素的数量等于打开文件的数量。
filename = fopen(
返回上一次调用 fileID
)fopen
在打开 fileID
指定的文件时所使用的文件名。输出文件名将解析到完整路径。fopen
函数不会从文件读取信息来确定输出值。
示例
打开文件并将标识符传递给文件 I/O 函数
打开文件并将文件标识符传递给 fgetl
函数以读取数据。
打开文件 tsunamis.txt
并获取文件标识符。
fileID = fopen('tsunamis.txt');
将 fileID
传递给 fgetl
函数以从文件读取一行。
tline = fgetl(fileID)
tline = 'A global tsunami data set in xlsx format, comprising the following file:'
关闭文件。
fclose(fileID)
请求要打开的文件的名称
创建一条提示,要求提供待打开文件的名称。如果 fopen
无法打开文件,则显示相关错误消息。
fileID = -1;
errmsg = '';
while fileID < 0
disp(errmsg);
filename = input('Open file: ', 's');
[fileID,errmsg] = fopen(filename);
end
打开要写入的文件并指定访问类型、写入顺序、字符编码
打开一个文件,使用 Shift-JIS 字符编码写入到文件。
fileID = fopen('japanese_out.txt','w','n','Shift_JIS');
'w'
输入指定写入权限,'n'
输入指定本机字节排序方式,'Shift_JIS'
指定字符编码方案。
获取有关已打开文件的信息
假定您以前使用 fopen
打开了文件。
fileID = fopen('tsunamis.txt');
获取所有已打开文件的文件标识符。
fIDs = fopen('all')
fIDs = 3
获取已打开文件的文件名称及字符编码。使用 ~
代替您希望省略的输出参数。
[filename,~,~,encoding] = fopen(fileID)
filename = 'matlabroot\toolbox\matlab\demos\tsunamis.txt' encoding = 'windows-1252'
这里显示的输出内容有代表性。您的结果可能有所不同。
输入参数
filename
- 要打开的文件的名称
字符向量或字符串标量
要打开的文件名称(含文件扩展名),指定为字符行向量或字符串标量。如果该文件不在当前文件夹中,则 filename
必须包含完整或相对路径。
在 UNIX 系统上,如果 filename
以 '~/'
或 '~
开头,则 username
/'fopen
函数分别延长路径至当前用户或指定用户的主目录。
如要打开有读取权限的文件而该文件不在当前文件夹中,则
fopen
将沿 MATLAB 搜索路径进行搜索。如要打开有写入或追加权限的文件而该文件不在当前文件夹中,则
fopen
将在当前目录中创建一个文件。
示例: 'myFile.txt'
数据类型: char
| string
permission
- 文件访问类型
'r'
(默认) | 'w'
| 'a'
| 'r+'
| 'w+'
| 'a+'
| 'A'
| 'W'
| ...
文件访问类型,指定为字符向量或字符串标量。您可以用二进制模式或文本模式打开文件。在 UNIX 系统上,两种转换模式具有相同的效果。要以二进制模式打开文件,请指定以下各项之一。
|
打开要读取的文件。 |
|
打开或创建要写入的新文件。放弃现有内容(如果有)。 |
|
打开或创建要写入的新文件。追加数据到文件末尾。 |
|
打开要读写的文件。 |
|
打开或创建要读写的新文件。放弃现有内容(如果有)。 |
|
打开或创建要读写的新文件。追加数据到文件末尾。 |
|
打开文件以追加(但不自动刷新)当前输出缓冲区。 |
|
打开文件以写入(但不自动刷新)当前输出缓冲区。 |
要以文本模式打开文件,请将字母 't'
附加到 permission
参数,例如 'rt'
或 'wt+'
。
在 Windows 系统上,以文本模式:
读取操作如果遇到回车符后加换行符 (
'\r\n'
),则会从输入中删除回车符。写入操作在输出中的任何换行符之前插入一个回车符。
如果要在 MATLAB 中写入文件,则以文本模式打开或创建新文件,然后在 Microsoft 记事本或不会将 '\n'
识别为换行符序列的任意文本编辑器中打开该文件。写入文件时,用 '\r\n'
结束每行。有关示例,请参阅 fprintf
。否则,请以二进制模式打开文件以获得更佳的性能。
要读写同一文件:
采用带加号
'+'
的permission
值打开文件。在读写操作之间调用
fseek
或frewind
。例如,不在调用fread
后调用fwrite
,或调用fwrite
后调用fread
,除非在它们之间调用fseek
或frewind
。
数据类型: char
| string
machinefmt
- 读取或写入字节或位的顺序
'n'
(默认) | 'b'
| 'l'
| 's'
| 'a'
| ...
在文件中读取或写入字节或位的顺序,指定为以下字符向量或字符串标量之一。
|
系统字节排序方式(默认) |
|
Big-endian 排序 |
|
Little-endian 排序 |
|
Big-endian 排序,64 位长数据类型 |
|
Little-endian 排序,64 位长数据类型 |
默认情况下,当前支持的所有平台都使用 little-endian 排序方式对新文件进行排序。现有二进制文件可以使用 big-endian 或 little-endian 排序方式。
数据类型: char
| string
encodingIn
- 字符编码
'UTF-8'
| 'ISO-8859-1'
| 'windows-1251'
| 'windows-1252'
| ...
后续读写操作使用的字符编码,包括 fscanf
、fprintf
、fgetl
、fgets
、fread
以及 fwrite
,指定为字符向量或字符串标量。该字符向量或字符串标量必须包含标准字符编码方案名称,如下所示。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
如果您不指定编码方案,fopen
将使用系统的默认编码方案打开文件进行处理。有关详细信息,请参阅使用不同的字符编码打开文件。
如果为编码指定的值不在支持的值列表中,则 MATLAB 会发出警告。有时(并非总是)指定其他编码名称会产生正确的结果。
数据类型: char
| string
fileID
- 已打开文件的文件标识符
整数
已打开文件的文件标识符,指定为整数。
数据类型: double
提示
在大多数情况下,不必以文本模式打开文件。MATLAB 导入函数、所有 UNIX 应用程序以及 Microsoft Word 和写字板都将
'\n'
识别为换行指示符。
扩展功能
C/C++ 代码生成
使用 MATLAB Coder 生成 C 代码和 C++ 代码。
用法说明和限制:
代码生成不支持:
输入参数
machinefmt
、encodingIn
或fileID
。输出参数
errmsg
。语法
fopen('all')
。以文本模式打开文件。即
permission
参数不能包含字母t
。例如,值不能为'rt'
。
permission
参数最多可以包含三个字符。字符必须是唯一的。如果您禁用外部调用,则不能将使用
fopen
创建的文件标识符返回给 MATLAB 函数或外部函数。这些文件标识符只能在内部使用。生成 C/C++ 可执行文件、静态库或动态库时,最多可以打开 20 个文件。
生成的代码不会报告因文件标识符无效而产生的错误。请在您自己的 MATLAB 代码中自行编写文件打开错误处理程序。测试
fopen
是否返回-1
,此值表示文件打开失败。例如:...
fid = fopen(filename, 'r');
if fid == -1
% fopen failed else
% fopen successful, okay to call fread
A = fread(fid);
...当您执行以下操作时,生成的代码对于
fread
的行为取决于编译器:使用
fopen
和a+
permission
打开文件。在调用设置文件位置指示符的 I/O 函数(如
fseek
或frewind
)之前,使用fread
读取文件。
matlab中fopen 打开文件或获得有关打开文件的信息的更多相关文章
- matlab中fopen 和 fprintf函数总结
matlab中fopen函数在指定文件打开的实例如下: *1)"fopen"打开文件,赋予文件代号. 语法1:FID= FOPEN(filename,permission) 用指定 ...
- 设置MATLAB中Current Folder的默认文件夹(转载)
设置MATLAB中Current Folder的默认文件夹 在我们使用MATLAB的过程中,其Current Folder面板会给我们带来一定的便利性.但遗憾的是,MATLAB自身没有提供友好的设置界 ...
- 【matlab】将matlab中数据输出保存为txt或dat格式
将matlab中数据输出保存为txt或dat格式 总结网上各大论坛,主要有三种方法. 第一种方法:save(最简单基本的) 具体的命令是:用save *.txt -ascii x x为变量 *.txt ...
- [matlab]改变矩阵的大小并保存到txt文件
要完成的任务是,加载一个保存在txt文件中的矩阵, 并把它扩大10倍,并且要再次保存回去 %加载txt文件 >load('Matrix.txt'); %扩大10倍 repmat(Matrix,r ...
- 从matlab中导出下载到的轨迹数据
我从该网址(http://www.ee.cuhk.edu.hk/~xgwang/MITtrajsingle.html)下载到了一些轨迹数据. 网页中简单说明了轨迹数据的由来:原始数据是在一个停车场上方 ...
- matlab中nargin函数输入参数数目
来源:https://ww2.mathworks.cn/help/matlab/ref/nargin.html?searchHighlight=nargin&s_tid=doc_srchtit ...
- C\C++中 fopen中文件打开方式的区别:
在C语言中,大家常用到fopen打开文件,准备进行写操作,再用fwrite把数据写入文件,最后用fclose关闭文件. 如以下C代码: #include <stdio.h> char ...
- matlab 中txt文件(含字符及数值)处理
matlab 中txt文件(含字符及数值)处理 (2008-08-02 09:45:12) 转载▼ 标签: 杂谈 分类: matlab及C学习 Matlab文件操作及读txt文件ZZ 2008-07- ...
- matlab文件操作及读txt文件(fopen,fseek,fread,fclose)
文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件.MATLAB提供了一系列低层输入输出函数,专门用于文件操作. 1.文件的打开与关闭 1)打开文件 在读写文件之前,必须先用f ...
随机推荐
- LWPR
Scriptable Render Pipeline https://docs.unity3d.com/Manual/ScriptableRenderPipeline.html Unity轻量 ...
- 算法专题 | 10行代码实现的最短路算法——Bellman-ford与SPFA
今天是算法数据结构专题的第33篇文章,我们一起来聊聊最短路问题. 最短路问题也属于图论算法之一,解决的是在一张有向图当中点与点之间的最短距离问题.最短路算法有很多,比较常用的有bellman-ford ...
- 线上环境去除console
npm i -D babel-plugin-transform-remove-console babel.config.js // 获取 VUE_APP_ENV 非 NODE_ENV,测试环境依然 c ...
- nginx 配置下载text等文件
当前的浏览器能够识别文件格式,如果浏览器本身能够解析就会默认打开,如果不能解析就会下载该文件.比如txt文件就直接被解析,还有其他文件也是一样. 在nginx.conf配置文件中添加 add_head ...
- mysql InnoDB引擎是否支持hash索引
看一下mysql官方文档:https://dev.mysql.com/doc/refman/5.7/en/create-index.html , 从上面的图中可以得知,mysql 是支持hash索引的 ...
- 开发一个渐进式Web应用程序(PWA)前都需要了解什么?
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://dzone.com/articles/how-to-build-a-progres ...
- 双向绑定数据的实现(new Proxy 版本)
调用 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...
- jackson序列化与反序列化的应用实践
jackson序列化与反序列化的应用实践 源码地址: https://github.com/zhouweixin/serializable 1 相关概念 序列化: 把对象转换为字节序列的过程称为对象的 ...
- CSS -- 元素简介
一.元素分类 在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素.内联元素(又叫行内元素)和内联块状元素. 常用的块状元素有: <div>.<p>.<h1 ...
- matlab数字图像处理-冈萨雷斯-读取,显示,保存图像
图像读取:imread(filename) 显示图像‘ 显示多幅图像 保存图像 b 计算压缩比