Matlab:fullfile、fileparts、mfilename、genpath函数

目录

前言

一、fullfile

1. 功能

2. 语法

3. 输入输出

3.1 输入

3.2 输出

4. 说明

5. 例子

5.1 在 Windows 上创建完整文件路径

5.2 在 UNIX 上创建完整文件路径

5.3 在 Windows 上创建多个文件的路径

5.4 折叠Windows 系统上的文件分隔符和圆点符号

 二、fileparts

1. 功能

2. 语法

3. 输入输出

3.1 输入

3.2 输出

4. 说明

5. 例子

5.1 获取 Windows 文件名的组成部分

5.2 获取 Linux 的 Dotfile 文件名的组成部分

5.3 从字符串数组中获取部分文件名

 三、mfilename

1. 功能

2. 语法

3. 说明

 四、genpath

1. 功能

2. 语法

3. 输入

4. 说明

5. 例子

将文件夹及子文件夹添加到搜索路径



前言

最近在学习EpicFlow的实现,给出原项目的git链接,因为原文作者使用64位Linux进行编程,代码中还包含了matlab文件,因此我单纯从代码的角度去查询相关matlab函数。

一、fullfile

1. 功能

从各个部分构建完整文件名。

2. 语法

f = fullfile(part1, part2, ..., partN)

3. 输入输出

3.1 输入

part1,...,partN — 文件夹或文件名称
字符向量 | 字符串数组 | 字符向量元胞数组

示例: fullfile('c:\','user','docs')

示例: fullfile('\\','Server01','user','docs')

示例: fullfile('home','users','docs',{'myfile.m', 'myfile2.m'})

数据类型: char | cell | string

3.2 输出

f — 完整文件名
字符数组 | 字符串数组 | 字符向量元胞数组

完整文件名,以字符数组、字符串数组或字符向量元胞数组形式返回。如果有任何输入参数是字符串数组,则 f 是字符串数组。否则,如果有任何输入参数是字符向量元胞数组,则 f 是字符向量元胞数组。否则,f 是字符数组。

数据类型: char | cell | string

4. 说明

该函数根据指定的文件夹和文件名构建完整的文件设定。

fullfile 在必要情况下插入依操作系统而定的文件分隔符,但不添加尾随的文件分隔符。在 Windows平台上,文件分隔符为反斜杠 (\)。在其他平台上,文件分隔符可能为不同字符。

在 Windows 上,fullfile 将所有正斜杠 (/) 替换为反斜杠 (\)。在 UNIX平台上,反斜杠 (\) 字符在文件名中是有效字符,不会被替换。

fullfile 不裁剪前导或尾随的分隔符。fullfile 折叠内部重复的文件分隔符,除非它们出现在完整文件设定的开头。fullfile 还将折叠由圆点符号指示的相对目录,除非它们出现在完整文件设定的末尾。由双圆点符号指示的相对目录不会折叠。

5. 例子

5.1 在 Windows 上创建完整文件路径

>> f = fullfile('myfolder','mysubfolder','myfile.m')
结果为:
f =
    'myfolder\mysubfolder\myfile.m'

5.2 在 UNIX 上创建完整文件路径

>> f = fullfile('myfolder','mysubfolder','myfile.m')
结果为:
f = 
'myfolder/mysubfolder/myfile.m'

5.3 在 Windows 上创建多个文件的路径

将多个文件名使用大括号括起来,文件之间使用分号隔开。

>> f = fullfile('c:\','myfiles','matlab',{'myfile1.m';'myfile2.m'})
结果为:
f =
  2×1 cell array
    'c:\myfiles\matlab\myfile1.m'
    'c:\myfiles\matlab\myfile2.m'

5.4 折叠Windows 系统上的文件分隔符和圆点符号

使用文件分隔符和圆点符号创建文件夹路径。

fullfile 不折叠前导或尾随的文件分隔符。filesep 会自动补全文件分隔符字符。

>> f = fullfile('c:\','myfiles','matlab',filesep)
结果为:
f =
c:\myfiles\matlab\

fullfile 折叠重复的文件分隔符,除非它们出现在完整文件设定的开头。

>> f = fullfile('c:\folder1', '\\\folder2\\')
结果为:
f =
c:\folder1\folder2\

fullfile 折叠由圆点符号指示的相对目录,除非它们出现在完整文件设定的末尾。由双圆点符号指示的相对目录不会折叠

>> f = fullfile('c:\folder1', '.\folder2', '..\folder3\.')
结果为:
f =
c:\folder1\folder2\..\folder3\.e

 二、fileparts

1. 功能

获取文件名的组成部分。

2. 语法

[filepath, name, ext] = fileparts(filename)

3. 输入输出

3.1 输入

filename — 文件名
字符串数组 | 字符向量 | 字符向量元胞数组

文件名,指定为字符串数组、字符向量或字符向量元胞数组。filename 可以包含路径和文件扩展名。

在 Windows系统上,您可以使用正斜杠 (/) 或反斜杠 (\) 作为路径分隔符(即使在同一文件名内)。在 UNIX和 Mac系统上,仅使用 / 作为分隔符。

要仅指定文件夹名称,请在 filename 中添加尾部分隔符。

数据类型: char | string | cell

3.2 输出

filepath — 文件路径
字符串数组 | 字符向量 | 字符向量元胞数组

文件路径,以字符串数组、字符向量或字符向量元胞数组形式返回。filepath 与输入参数 filename 具有相同的数据类型和形状。如果要解析的文件的名称未指定路径,则 filepath 为空 ('')。

数据类型: char | string | cell

name — 文件名
字符串数组 | 字符向量 | 字符向量元胞数组

文件名,以字符串数组、字符向量或字符向量元胞数组形式返回。name 与输入参数 filename 具有相同的数据类型和形状。

不包括扩展名。fileparts 将最右侧分隔符后面的所有字符解释为文件名和扩展名。

数据类型: char | string | cell

ext — 文件扩展名
字符串数组 | 字符向量 | 字符向量元胞数组

文件扩展名,以字符串数组、字符向量或字符向量元胞数组形式返回。ext 与输入参数 filename 具有相同的数据类型和形状。

ext 以句点 (.) 开头。如果要解析的文件的名称未指定扩展名,则 ext 为空 ('')。

数据类型: char | string | cell

4. 说明

[filepath,name,ext] = fileparts(filename返回指定文件的路径名称、文件名和扩展名。

fileparts 仅解析指定的 filename。不会验证文件是否存在。

5. 例子

5.1 获取 Windows 文件名的组成部分

获取 myfile.txt 的路径、名称和扩展名。

>> file = "H:\user4\matlab\myfile.txt";
>> [filepath,name,ext] = fileparts(file)
filepath = 
"H:\user4\matlab"
name = 
"myfile"
ext = 
".txt"

5.2 获取 Linux 的 Dotfile 文件名的组成部分

获取 Linux® 系统的用户 .cshrc 文件名的组成部分。

fileparts 将整个文件名解释为一个扩展名,因为它以句点开头。

>> [filepath,name,ext] = fileparts("/home/jsmith/.cshrc")
filepath = 
"/home/jsmith"
name = 
""
ext = 
".cshrc"

5.3 从字符串数组中获取部分文件名

从一个 2×2 字符串数组中的每个元素获取文件路径、名称和扩展名。

>> files1_4 = ["H:/user1/matlab/file1.txt",...
    "H:/user2/matlab/file2.txt";"H:/user3/matlab/file3.txt",...
    "H:/user4/matlab/file4.txt"];
>> [path,name,ext] = fileparts(files1_4)
path = 2x2 string
    "H:/user1/matlab"    "H:/user2/matlab"
    "H:/user3/matlab"    "H:/user4/matlab"

name = 2x2 string
    "file1"    "file2"
    "file3"    "file4"

ext = 2x2 string
    ".txt"    ".txt"
    ".txt"    ".txt"

 三、mfilename

1. 功能

获取当前正在运行的代码的文件名。

2. 语法

mfilename
p = mfilename('fullpath')
c = mfilename('class')

3. 说明

mfilename 返回一个字符向量,其中包含发生函数调用的文件的名称。从文件中调用时,则会返回该文件的名称。这样,脚本或函数就可以确定其名称。

p = mfilename('fullpath') 返回其中进行了调用的文件的完整路径和名称,不包括文件扩展名。

某个方法中的 c = mfilename('class') 返回该方法的类,不包括前导的 @ 符号。如果从非方法中调用,则会生成空字符向量。

 四、genpath

1. 功能

生成路径名称。

2. 语法

p = genpath

p = genpath(folerName)

3. 输入

folderName — 文件夹名称
字符向量 | 字符串标量

文件夹名称,指定为字符向量或字符串标量。

示例: 'c:/matlab/myfiles'

数据类型: char | string

4. 说明

p = genpath 返回一个包含路径名称的字符向量,该路径名称中包含 matlabroot/toolbox 下的所有文件夹和子文件夹,包括空的子文件夹。

p = genpath(folderName) 返回一个包含路径名称的字符向量,该路径名称中包含 folderName 以及 folderName 下的多级子文件夹。路径名称中不包含名为 private 的文件夹、以 @ 字符开头的文件夹(类文件夹)、以 + 字符开头的文件夹(包文件夹)、名为 resources 的文件夹或所有这些文件夹中的子文件夹。

5. 例子

将文件夹及子文件夹添加到搜索路径

结合使用 genpath 和 addpath 将文件夹及其子文件夹添加到搜索路径。

创建一个文件夹 myfolder,其中包含子文件夹 mysubfolder

>> mkdir myfolder;
>> cd myfolder;
>> mkdir mysubfolder;
>> cd ..

生成一个路径,其中包含 myfolder 以及其下的所有文件夹。
>> p = genpath('myfolder')


结果为:
p =

'myfolder:myfolder/mysubfolder:'

将文件夹及其子文件夹添加到搜索路径。

>> addpath(p)

 


  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZGlenfiddich

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值