我想检查字符串是否代表文件的完整路径,如下所示:
p = 'C:\my\custom\path.txt'
该文件不存在,因此isdir
和exist
之类的命令会向我返回false,但字符串的格式仍然代表我的操作系统的有效路径,而下一个不是因为它的文件名无效:
p = 'C:\my\custom\:path.txt'
所以我想知道如何检查字符串是否代表有效的文件路径,而不需要文件实际存在。
答案 0 :(得分:3)
您可能希望将regexp
功能与regular expression to match Windows paths一起使用。
if isempty(regexp(p, '^(?:[a-zA-Z]\:|\\\\[\w\.]+\\[\w.$]+)\\(?:[\w]+\\)*\w([\w.])+$', 'once'))
// This is not a path
end
答案 1 :(得分:1)
您也可以让Matlab为您尝试:
if ~isdir(p)
[status, msg] = mkdir(p);
if status
isdir(p)
rmdir(p)
else
error(msg)
end
end
首先,检查文件夹是否存在,如果不存在,则尝试创建该文件夹。如果你成功,那么你删除它,如果没有,你会抛出错误。
这不建议用于检查许多字符串,但具有跨平台的优势。
答案 2 :(得分:1)
function bool = isLegalPath(str)
bool = true;
try
java.io.File(str).toPath;
catch
bool = false;
end
end