在 Qt 中区分文件路径和 url
Make the difference between a file path and a url in Qt
如果我有一个可以是 file 或 URL 的字符串,是否有现成的巧妙方法我可以用来区分它们吗?
例如:
- /Users/user/Documents/mydoc.txt -> 路径
- c:\Program Files\myapp\mydoc.doc -> 路径
- https://mywebsite.com/mydoc.txt -> url
- ftp://myserver.com/myfile.txt -> url
这是为了加载一个设计器UI文件,所以我需要制作一个远程文件的本地临时副本。
所以最重要的是要知道我什么时候需要下载文件。
您可以使用给定的名称创建一个 QFile
并检查它是否 exists()
。如果不尝试将字符串解析为 URL.
好吧,您可能想从这些字符串构造一个 QUrl
对象并验证这些 URL 是否引用本地文件。即:
static bool isLocalFile(const QString &str)
{
return QUrl::fromUserInput(str).isLocalFile();
}
用你的琴弦
QString s1("/Users/user/Documents/mydoc.txt");
QString s2("c:\Program Files\myapp\mydoc.doc");
QString s3("https://mywebsite.com/mydoc.txt");
QString s4("ftp://myserver.com/myfile.txt");
bool b = isLocalFile(s1); // a path
b = isLocalFile(s2); // a path
b = isLocalFile(s3); // not a path
b = isLocalFile(s4); // not a path
如果我有一个可以是 file 或 URL 的字符串,是否有现成的巧妙方法我可以用来区分它们吗?
例如:
- /Users/user/Documents/mydoc.txt -> 路径
- c:\Program Files\myapp\mydoc.doc -> 路径
- https://mywebsite.com/mydoc.txt -> url
- ftp://myserver.com/myfile.txt -> url
这是为了加载一个设计器UI文件,所以我需要制作一个远程文件的本地临时副本。 所以最重要的是要知道我什么时候需要下载文件。
您可以使用给定的名称创建一个 QFile
并检查它是否 exists()
。如果不尝试将字符串解析为 URL.
好吧,您可能想从这些字符串构造一个 QUrl
对象并验证这些 URL 是否引用本地文件。即:
static bool isLocalFile(const QString &str)
{
return QUrl::fromUserInput(str).isLocalFile();
}
用你的琴弦
QString s1("/Users/user/Documents/mydoc.txt");
QString s2("c:\Program Files\myapp\mydoc.doc");
QString s3("https://mywebsite.com/mydoc.txt");
QString s4("ftp://myserver.com/myfile.txt");
bool b = isLocalFile(s1); // a path
b = isLocalFile(s2); // a path
b = isLocalFile(s3); // not a path
b = isLocalFile(s4); // not a path