目录
前言
一、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函数。
从各个部分构建完整文件名。
f = fullfile(part1, part2, ..., partN)
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
该函数根据指定的文件夹和文件名构建完整的文件设定。
fullfile
在必要情况下插入依操作系统而定的文件分隔符,但不添加尾随的文件分隔符。在 Windows平台上,文件分隔符为反斜杠 (\
)。在其他平台上,文件分隔符可能为不同字符。
在 Windows 上,fullfile
将所有正斜杠 (/
) 替换为反斜杠 (\
)。在 UNIX平台上,反斜杠 (\
) 字符在文件名中是有效字符,不会被替换。
fullfile
不裁剪前导或尾随的分隔符。fullfile
折叠内部重复的文件分隔符,除非它们出现在完整文件设定的开头。fullfile
还将折叠由圆点符号指示的相对目录,除非它们出现在完整文件设定的末尾。由双圆点符号指示的相对目录不会折叠。
>> f = fullfile('myfolder','mysubfolder','myfile.m') 结果为: f = 'myfolder\mysubfolder\myfile.m'
>> f = fullfile('myfolder','mysubfolder','myfile.m') 结果为: f = 'myfolder/mysubfolder/myfile.m'
将多个文件名使用大括号括起来,文件之间使用分号隔开。
>> f = fullfile('c:\','myfiles','matlab',{'myfile1.m';'myfile2.m'}) 结果为: f = 2×1 cell array 'c:\myfiles\matlab\myfile1.m' 'c:\myfiles\matlab\myfile2.m'
使用文件分隔符和圆点符号创建文件夹路径。
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
获取文件名的组成部分。
[filepath, name, ext] = fileparts(filename)
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
[filepath,name,ext] = fileparts(filename)
返回指定文件的路径名称、文件名和扩展名。
fileparts
仅解析指定的 filename
。不会验证文件是否存在。
获取
myfile.txt
的路径、名称和扩展名。>> file = "H:\user4\matlab\myfile.txt"; >> [filepath,name,ext] = fileparts(file)filepath = "H:\user4\matlab"name = "myfile"ext = ".txt"
获取 Linux® 系统的用户
.cshrc
文件名的组成部分。
fileparts
将整个文件名解释为一个扩展名,因为它以句点开头。>> [filepath,name,ext] = fileparts("/home/jsmith/.cshrc")filepath = "/home/jsmith"name = ""ext = ".cshrc"
从一个 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
p = mfilename('fullpath')
c = mfilename('class')
mfilename
返回一个字符向量,其中包含发生函数调用的文件的名称。从文件中调用时,则会返回该文件的名称。这样,脚本或函数就可以确定其名称。
p = mfilename('fullpath')
返回其中进行了调用的文件的完整路径和名称,不包括文件扩展名。
某个方法中的 c = mfilename('class')
返回该方法的类,不包括前导的 @
符号。如果从非方法中调用,则会生成空字符向量。
生成路径名称。
p = genpath
p = genpath(folerName)
folderName
— 文件夹名称
字符向量 | 字符串标量文件夹名称,指定为字符向量或字符串标量。
示例:
'c:/matlab/myfiles'
数据类型:
char
|string
p = genpath
返回一个包含路径名称的字符向量,该路径名称中包含
下的所有文件夹和子文件夹,包括空的子文件夹。matlabroot
/toolbox
p = genpath(folderName)
返回一个包含路径名称的字符向量,该路径名称中包含 folderName
以及 folderName
下的多级子文件夹。路径名称中不包含名为 private
的文件夹、以 @
字符开头的文件夹(类文件夹)、以 +
字符开头的文件夹(包文件夹)、名为 resources
的文件夹或所有这些文件夹中的子文件夹。
结合使用
genpath
和addpath
将文件夹及其子文件夹添加到搜索路径。创建一个文件夹
myfolder
,其中包含子文件夹mysubfolder
。>> mkdir myfolder; >> cd myfolder; >> mkdir mysubfolder; >> cd ..生成一个路径,其中包含 myfolder 以及其下的所有文件夹。
>> p = genpath('myfolder')
结果为:
p ='myfolder:myfolder/mysubfolder:'
将文件夹及其子文件夹添加到搜索路径。
>> addpath(p)