我花了很长时间无法找到内置的MATLAB函数来将相对文件路径转换为绝对文件路径(可移植).
有吗?
我正在寻找一些最好"内置"的东西(即在MATLAB发行版的某个地方可用,包括其中一个工具箱).即使是"包私有"功能也是可以接受的,只要我能检查功能的源代码即可.第二好的是第三方功能,只要它有一个像样的测试套件.我不是在寻找针对这个问题而编写的函数.1
如果不存在上述任何一种情况,即使是(可移植地)测试路径是否是绝对的功能也会(具有与之前相同的条件:"内置"功能或带有测试套件的第三方功能) .
1实现这样一个函数的困难不是编写函数本身,而是为它编写一个足够完整的测试套件(当然,确保函数通过所有测试!).
Dan*_*iel 10
fullfile(pwd, relative_path) 将相对转换为绝对路径.
这是 MathWorks 自己使用的方法:
[status, info] = fileattrib(file);
if status
% Return the full path if fileattrib found the file.
fullFilePath = info.Name;
end
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方法测试路径是否为绝对路径
javaFileObj = java.io.File(pathToBeTested);
javaFileObj.isAbsolute()
Run Code Online (Sandbox Code Playgroud)
不像char(javaFileObj.getCanonicalPath()),它确实有时会错误地返回相对于 C:\Windows\System32 的不存在的路径,isAbsolute() 似乎工作正常(在 Win7、MATLAB 2015b 上测试)因此构造绝对路径的代码看起来像
function F = rel2abs(F)
if ~java.io.File(F).isAbsolute
F = fullfile(pwd,F);
end
Run Code Online (Sandbox Code Playgroud)
该函数具有幂等的优点。
| 归档时间: |
|
| 查看次数: |
6381 次 |
| 最近记录: |