【问题标题】:Use QFileInfo to find creation date and time使用 QFileInfo 查找创建日期和时间
【发布时间】:2013-06-27 12:27:47
【问题描述】:

这是我现在拥有的代码

/* Rename existing project files to .old */
if (FileIOUtil::fileExists(dest, outFileName))
{
  QFile oldFile(outFileName);
  QFileInfo fileInfo; fileInfo.setFile(oldFile);
  QDateTime created = fileInfo.lastModified();
  FileIOUtil::mvFile(dest, outFileName,
                     dest, outFileName + ".old" + created.toString());
}

注意:mvfile 的工作方式类似于 unix 命令 mv。它只是将文件移动到新名称。

但是,这会将我的 project.c 重命名为 project.c.old.Thu Jan 1 01:00:00 1970。我很确定我要重命名的文件没有那么旧;)

任何想法为什么我会因此而获得时代?

【问题讨论】:

  • 您的created 计算似乎正确但过于冗长。您可以删除oldFilefileInfo 变量并使用QDateTime created = QFileInfo(outFileName).lastModified();。系统实用程序是否正确显示此文件的最后修改时间?
  • @Riateche 是的。

标签: c++ qt qdatetime


【解决方案1】:

我不得不修改以下行:

QFile oldFile(outFileName);

QFile oldFile(dest + outFileName);

或者正如@Riateche 在他的评论中提到的那样,完全删除 oldFile 和 fileInfo 变量并执行以下操作:

QFileInfo(dest+outFileName).created();

【讨论】:

  • 是的,这并不奇怪,因为如果您指定QFileInfo 的非绝对路径,它会被视为相对于当前工作目录。似乎FileIOUtil 类在内部预先添加了dest 字符串。我没有注意到这一点,并认为outFileName 已经是绝对的,因为mvFile 可以使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多