Qt里面如何修改文件的属性?

zhangweiguo828 2011-11-01 11:29:37
Qt里面如何修改文件的属性,比如文件的创建时间、最后一次修改时间等。
我看了一下QFileInfo,这个好像只能读,没有办法修改。
...全文
1014 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangweiguo828 2012-05-25
  • 打赏
  • 举报
回复
这个其实和Qt无关,调用的windows自己的库,你可以看一下msdn,下面是msdn拷过来的
// crt_utime.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/utime.h>
#include <time.h>

int main( void )
{
struct tm tma = {0}, tmm = {0};
struct _utimbuf ut;

// Fill out the accessed time structure
tma.tm_hour = 12;
tma.tm_isdst = 0;
tma.tm_mday = 15;
tma.tm_min = 0;
tma.tm_mon = 0;
tma.tm_sec = 0;
tma.tm_year = 103;

// Fill out the modified time structure
tmm.tm_hour = 12;
tmm.tm_isdst = 0;
tmm.tm_mday = 15;
tmm.tm_min = 0;
tmm.tm_mon = 0;
tmm.tm_sec = 0;
tmm.tm_year = 102;

// Convert tm to time_t
ut.actime = mktime(&tma);
ut.modtime = mktime(&tmm);

// Show file time before and after
system( "dir crt_utime.c" );
if( _utime( "crt_utime.c", &ut ) == -1 )
perror( "_utime failed\n" );
else
printf( "File time modified\n" );
system( "dir crt_utime.c" );
}

[Quote=引用 12 楼 learningstone 的回复:]

我正在做qt的程序,也需要修改文件的最后修改时间,能具体的说一下怎么调用_utime()吗? 非常感谢!
[/Quote]
learningstone 2012-03-29
  • 打赏
  • 举报
回复
我正在做qt的程序,也需要修改文件的最后修改时间,能具体的说一下怎么调用_utime()吗? 非常感谢!
zhangweiguo828 2011-11-07
  • 打赏
  • 举报
回复
我是这样用的
_utime("e:\\test.txt", &ut);
_utime("e://test.txt", &ut);
_utime("e:\test.txt", &ut);
_utime("e:/test.txt", &ut);
都不行
[Quote=引用 9 楼 dbzhang800 的回复:]

引用 7 楼 zhangweiguo828 的回复:

我试了一下确实可以,但是如果在文件命里面加上路径就执行失败了,不知道为什么啊!
引用 1 楼 dbzhang800 的回复:

用系统api:
windows下 _utime()
其他平台 utime()

呵呵,一般来说,这个足以说明:你自己写的路径有问题

当然,如果你能证实这是系统的bug就更厉害了。
[/Quote]
dbzhang800 2011-11-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhangweiguo828 的回复:]

我试了一下确实可以,但是如果在文件命里面加上路径就执行失败了,不知道为什么啊!
引用 1 楼 dbzhang800 的回复:

用系统api:
windows下 _utime()
其他平台 utime()
[/Quote]
呵呵,一般来说,这个足以说明:你自己写的路径有问题

当然,如果你能证实这是系统的bug就更厉害了。
zhangweiguo828 2011-11-07
  • 打赏
  • 举报
回复
调用哪个命令?
[Quote=引用 6 楼 xiaoliang_1 的回复:]

恩,学习了,不过在QT中调用命令也是很好的啊,而且很方便的啊。
引用 1 楼 dbzhang800 的回复:
用系统api:
windows下 _utime()
其他平台 utime()
[/Quote]
zhangweiguo828 2011-11-07
  • 打赏
  • 举报
回复
我试了一下确实可以,但是如果在文件命里面加上路径就执行失败了,不知道为什么啊!
[Quote=引用 1 楼 dbzhang800 的回复:]

用系统api:
windows下 _utime()
其他平台 utime()
[/Quote]
zhangweiguo828 2011-11-07
  • 打赏
  • 举报
回复
粗心害死人啊,其实不是路径的问题,是调用_utime("e:\\test.txt", &ut);的时候ut的变量名没有写对,另外如果不设置ut.modtime,而只设置了ut.actime,也不行。
[Quote=引用 7 楼 zhangweiguo828 的回复:]

我试了一下确实可以,但是如果在文件命里面加上路径就执行失败了,不知道为什么啊!
引用 1 楼 dbzhang800 的回复:

用系统api:
windows下 _utime()
其他平台 utime()
[/Quote]
刀刀亮 2011-11-04
  • 打赏
  • 举报
回复
恩,学习了,不过在QT中调用命令也是很好的啊,而且很方便的啊。
[Quote=引用 1 楼 dbzhang800 的回复:]
用系统api:
windows下 _utime()
其他平台 utime()
[/Quote]
在水一方 2011-11-04
  • 打赏
  • 举报
回复
qt里面没有相应的函数,修改文件时间这种操作是和平台相关的,所以如果你的程序是需要跨平台的话,你需要进行条件编译。不同的平台下调用不同的系统函数进行设置。
念茜 2011-11-01
  • 打赏
  • 举报
回复
Qt做不了,要使系统调用。就是在Qt程序里面调用系统命令。
Vincent_Song 2011-11-01
  • 打赏
  • 举报
回复
查看帮助手册中文件操作类。

希望能够帮到你!
dbzhang800 2011-11-01
  • 打赏
  • 举报
回复
用系统api:
windows下 _utime()
其他平台 utime()
zhh_kv 2011-11-01
  • 打赏
  • 举报
回复
可以直接包括#include<windows.h>
然后调用系统函数

16,817

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧