参考:https://ww2.mathworks.cn/help/matlab/ref/fopen.html?searchHighlight=fopen&s_tid=doc_srchtitle

个人认为返回的标识符是一个文件句柄handle, 网上的解释是: MATLAB 保留文件标识符 012 分别用于标准输入、标准输出(屏幕)和标准错误。

fopen

打开文件或获得有关打开文件的信息

全页折叠
 

说明

示例

fileID = fopen(filename) 打开文件 filename 以便以二进制读取形式进行访问,并返回等于或大于 3 的整数文件标识符。MATLAB 保留文件标识符 012 分别用于标准输入、标准输出(屏幕)和标准错误。

如果 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 函数不会从文件读取信息来确定输出值。

示例

[filename,permission,machinefmt,encodingOut] = fopen(fileID) 还会返回上一次调用 fopen 在打开指定文件时所使用的权限、计算机格式以及编码。如果是以二进制模式打开的文件,则 permission 会包含字母 'b'encodingOut 输出是一个标准编码方案名称。fopen 不会从文件读取信息来确定这些输出值。无效的 fileID 会为所有输出参数返回空字符向量。

 

示例

全部折叠

打开文件并将标识符传递给文件 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 系统上,两种转换模式具有相同的效果。要以二进制模式打开文件,请指定以下各项之一。

'r'

打开要读取的文件。

'w'

打开或创建要写入的新文件。放弃现有内容(如果有)。

'a'

打开或创建要写入的新文件。追加数据到文件末尾。

'r+'

打开要读写的文件。

'w+'

打开或创建要读写的新文件。放弃现有内容(如果有)。

'a+'

打开或创建要读写的新文件。追加数据到文件末尾。

'A'

打开文件以追加(但不自动刷新)当前输出缓冲区。

'W'

打开文件以写入(但不自动刷新)当前输出缓冲区。

要以文本模式打开文件,请将字母 't' 附加到 permission 参数,例如 'rt''wt+'

在 Windows 系统上,以文本模式:

  • 读取操作如果遇到回车符后加换行符 ('\r\n'),则会从输入中删除回车符。

  • 写入操作在输出中的任何换行符之前插入一个回车符。

如果要在 MATLAB 中写入文件,则以文本模式打开或创建新文件,然后在 Microsoft 记事本或不会将 '\n' 识别为换行符序列的任意文本编辑器中打开该文件。写入文件时,用 '\r\n' 结束每行。有关示例,请参阅 fprintf。否则,请以二进制模式打开文件以获得更佳的性能。

要读写同一文件:

  • 采用带加号 '+'permission 值打开文件。

  • 在读写操作之间调用 fseekfrewind。例如,不在调用 fread 后调用 fwrite,或调用 fwrite 后调用 fread,除非在它们之间调用 fseekfrewind

数据类型: char | string

machinefmt - 读取或写入字节或位的顺序
'n' (默认) | 'b' | 'l' | 's' | 'a' | ...

在文件中读取或写入字节或位的顺序,指定为以下字符向量或字符串标量之一。

'n''native'

系统字节排序方式(默认)

'b''ieee-be'

Big-endian 排序

'l''ieee-le'

Little-endian 排序

's''ieee-be.l64'

Big-endian 排序,64 位长数据类型

'a''ieee-le.l64'

Little-endian 排序,64 位长数据类型

默认情况下,当前支持的所有平台都使用 little-endian 排序方式对新文件进行排序。现有二进制文件可以使用 big-endian 或 little-endian 排序方式。

数据类型: char | string

encodingIn - 字符编码
'UTF-8' | 'ISO-8859-1' | 'windows-1251' | 'windows-1252' | ...

后续读写操作使用的字符编码,包括 fscanffprintffgetlfgetsfread 以及 fwrite,指定为字符向量或字符串标量。该字符向量或字符串标量必须包含标准字符编码方案名称,如下所示。

'Big5'

'ISO-8859-1'

'windows-874'

'Big5-HKSCS'

'ISO-8859-2'

'windows-949'

'CP949'

'ISO-8859-3'

'windows-1250'

'EUC-KR'

'ISO-8859-4'

'windows-1251'

'EUC-JP'

'ISO-8859-5'

'windows-1252'

'EUC-TW'

'ISO-8859-6'

'windows-1253'

'GB18030'

'ISO-8859-7'

'windows-1254'

'GB2312'

'ISO-8859-8'

'windows-1255'

'GBK'

'ISO-8859-9'

'windows-1256'

'IBM866'

'ISO-8859-11'

'windows-1257'

'KOI8-R'

'ISO-8859-13'

'windows-1258'

'KOI8-U'

'ISO-8859-15'

'US-ASCII'

 

'Macintosh'

'UTF-8'

 

'Shift_JIS'

 

如果您不指定编码方案,fopen 将使用系统的默认编码方案打开文件进行处理。有关详细信息,请参阅使用不同的字符编码打开文件

如果为编码指定的值不在支持的值列表中,则 MATLAB 会发出警告。有时(并非总是)指定其他编码名称会产生正确的结果。

数据类型: char | string

fileID - 已打开文件的文件标识符
整数

已打开文件的文件标识符,指定为整数。

数据类型: double

提示

  • 在大多数情况下,不必以文本模式打开文件。MATLAB 导入函数、所有 UNIX 应用程序以及 Microsoft Word 和写字板都将 '\n' 识别为换行指示符。

扩展功能

C/C++ 代码生成
使用 MATLAB Coder 生成 C 代码和 C++ 代码。

用法说明和限制:

  • 代码生成不支持:

    • 输入参数 machinefmtencodingInfileID

    • 输出参数 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 的行为取决于编译器:

    1. 使用 fopena+ permission 打开文件。

    2. 在调用设置文件位置指示符的 I/O 函数(如 fseekfrewind)之前,使用 fread 读取文件。

matlab中fopen 打开文件或获得有关打开文件的信息的更多相关文章

  1. matlab中fopen 和 fprintf函数总结

    matlab中fopen函数在指定文件打开的实例如下: *1)"fopen"打开文件,赋予文件代号. 语法1:FID= FOPEN(filename,permission) 用指定 ...

  2. 设置MATLAB中Current Folder的默认文件夹(转载)

    设置MATLAB中Current Folder的默认文件夹 在我们使用MATLAB的过程中,其Current Folder面板会给我们带来一定的便利性.但遗憾的是,MATLAB自身没有提供友好的设置界 ...

  3. 【matlab】将matlab中数据输出保存为txt或dat格式

    将matlab中数据输出保存为txt或dat格式 总结网上各大论坛,主要有三种方法. 第一种方法:save(最简单基本的) 具体的命令是:用save *.txt -ascii x x为变量 *.txt ...

  4. [matlab]改变矩阵的大小并保存到txt文件

    要完成的任务是,加载一个保存在txt文件中的矩阵, 并把它扩大10倍,并且要再次保存回去 %加载txt文件 >load('Matrix.txt'); %扩大10倍 repmat(Matrix,r ...

  5. 从matlab中导出下载到的轨迹数据

    我从该网址(http://www.ee.cuhk.edu.hk/~xgwang/MITtrajsingle.html)下载到了一些轨迹数据. 网页中简单说明了轨迹数据的由来:原始数据是在一个停车场上方 ...

  6. matlab中nargin函数输入参数数目

    来源:https://ww2.mathworks.cn/help/matlab/ref/nargin.html?searchHighlight=nargin&s_tid=doc_srchtit ...

  7. C\C++中 fopen中文件打开方式的区别:

    在C语言中,大家常用到fopen打开文件,准备进行写操作,再用fwrite把数据写入文件,最后用fclose关闭文件. 如以下C代码:   #include <stdio.h> char ...

  8. matlab 中txt文件(含字符及数值)处理

    matlab 中txt文件(含字符及数值)处理 (2008-08-02 09:45:12) 转载▼ 标签: 杂谈 分类: matlab及C学习 Matlab文件操作及读txt文件ZZ 2008-07- ...

  9. matlab文件操作及读txt文件(fopen,fseek,fread,fclose)

    文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件.MATLAB提供了一系列低层输入输出函数,专门用于文件操作. 1.文件的打开与关闭 1)打开文件 在读写文件之前,必须先用f ...

随机推荐

  1. mysql5.7.29- windows64安装教程

    1.配置环境变量 MYSQL_HOME=D:\tools\mysql-5.7. path=%MYSQL_HOME%\bin 2.执行mysqld --initialize-insecure --use ...

  2. 小程序开发-Map地图组件

    Map组件 是原生组件,使用时请注意相关限制.个性化地图能力可在小程序后台"设置-开发者工具-腾讯位置服务"申请开通. 设置subkey后,小程序内的地图组件均会使用该底图效果,底 ...

  3. 本地模拟 gitlab ci 的 demo 项目

    构建好的镜像能跑起来, 项目地址: https://github.com/szliugx/gitlab-ci-local 为了不每次提交,本地可以做一些模拟 gitlab ci 的测试≍,主要实现方式 ...

  4. nginx模型概念和配置文件结构

    一. nginx模型概念: Nginx会按需同时运行多个进程: 一个主进程(master)和几个工作进程(worker),配置了缓存时还会有缓存加载器进程(cache loader)和缓存管理器进程( ...

  5. Bypass windous/mac 登陆密码

    前言 如题,在52破解里看到一个非常好用的工具 Kon-Boot 2.7 功能 不会去擦除windows密码 不会修改windows文件 此外,Kon-Boot的最新版是目前世界上唯一的一个能够绕过W ...

  6. odoo10甘特图gantt view

    odoo10中的gantt图示例 1.Gantt属性说明 甘特图视图的根元素是<gantt />,它没有子节点但可以采用以下属性: date_start (required) 提供每条记录 ...

  7. 【漫话DevOps】What is DevOps?

    最近几年"DevOps"这个关键词经常出现在项目开发当中,特别是随着微服务/容器/cloud在项目中的大范围应用,你不想知道都很难.作为一个伴随CI/CD到DevOps一路走来的工 ...

  8. docker下jira数据备份和还原注意路径

    重点:jira页面上的备份与恢复页面的路径,跟我实际路径是有出入的,如果找不到就用find去搜下备份文件就知道怎么操作了 1.登录jira后,右上角的系统——左侧的导入与导出——选择里面的备份与恢复 ...

  9. dict字典,以及字典的一些基本应用

    dict表示方法: dict={}或d=dict() 1.字典的增:d['元素名']='元素值'.或d.setdefault('key','value') 2.字典的删:d.pop(key).或del ...

  10. 【高并发】面试官:Java中提供了synchronized,为什么还要提供Lock呢?

    写在前面 在Java中提供了synchronized关键字来保证只有一个线程能够访问同步代码块.既然已经提供了synchronized关键字,那为何在Java的SDK包中,还会提供Lock接口呢?这是 ...