构造QFileInfo对象会导致文件系统访问吗?

sas*_*alm 4 c++ qt

从QFileInfo文档运行此示例代码时:

 QFileInfo fi("/tmp/archive.tar.gz");
 QString base = fi.baseName();  // base = "archive"
Run Code Online (Sandbox Code Playgroud)

它会导致访问文件系统吗?

我假设调用fi.lastModified()fi.exists()要求访问文件系统,但是我只用它来提取部分文件名(扩展名,基本文件名,只有目录等)?

and*_*oni 6

在没有查看方法的实现的情况下,很难准确地说whitch方法访问文件系统而不是.但我在图书馆找到了这样的解释来回答你的问题:

*性能问题QFileInfo的一些函数查询文件系统,但出于性能原因,某些函数仅对文件名本身进行操作.例如:要返回相对文件名的绝对路径,absolutePath()必须查询文件系统.但是,path()函数可以直接处理文件名,因此速度更快.注意:为了加快性能,QFileInfo会缓存有关该文件的信息.为了加快性能,QFileInfo缓存有关该文件的信息.由于文件可以被其他用户或程序更改,甚至可以由同一程序的其他部分更改,因此有一个函数可以刷新文件信息:refresh().如果要关闭QFileInfo的缓存并强制它在每次请求信息时访问文件系统,请调用setCaching(false).*