如何修改文件创建、修改时间?

xcityman 2003-08-20 11:23:35
请问各位:
文件生成时,是取得系统时间,我想让自己编译生成的,或是经过修改过
的文件,生成、保存时按自己定义的时间来完成,是否可以达到这样的效果?
谢谢!
...全文
354 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xcityman 2003-08-21
  • 打赏
  • 举报
回复
多谢两位的帮助!
xizhouhawk 2003-08-20
  • 打赏
  • 举报
回复
我的文件属性修改例子,看看对你有没有帮助。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
SYSTEMTIME *Stime;
Stime=new SYSTEMTIME;
AnsiString filename;
filename=Edit1->Text;
if(filename=="*.*") return;
filename=FileListBox1->FileName;
WIN32_FIND_DATA f;
HANDLE h;
h=FindFirstFile(filename.c_str(),&f);
Label1->Caption=f.cFileName;
Label2->Caption=DirectoryListBox1->Directory;
Label3->Caption=IntToStr(f.nFileSizeLow);
FileTimeToSystemTime(&(f.ftCreationTime),Stime);
Label4->Caption=IntToStr(Stime->wYear)+"-"+IntToStr(Stime->wMonth);

int Att;
Att=f.dwFileAttributes;
if((Att&faReadOnly)==faReadOnly) CheckBox1->Checked=true; else CheckBox1->Checked=false;
if((Att&faHidden)==faHidden) CheckBox2->Checked=true; else CheckBox2->Checked=false;
if((Att&faSysFile)==faSysFile) CheckBox3->Checked=true; else CheckBox3->Checked=false;
if((Att&faArchive)==faArchive) CheckBox4->Checked=true; else CheckBox4->Checked=false;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
int Att;
if(CheckBox1->Checked) Att=(Att|faReadOnly);
if(CheckBox2->Checked) Att=(Att|faHidden);
if(CheckBox3->Checked) Att=(Att|faSysFile);
if(CheckBox4->Checked) Att=(Att|faArchive);
FileSetAttr(FileListBox1->FileName,Att);

}
xuv2002 2003-08-20
  • 打赏
  • 举报
回复
上边得到文件时间可以不通过TDateTime类中转
可以直接只用SYSTEMTIME 结构赋值
其结构定义如下
typedef struct _SYSTEMTIME { // st
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME;
很清楚,从第一个到最后一个分别为年月日小时分钟 秒 和 微秒
使用TDateTime 只是为了方便而已
xuv2002 2003-08-20
  • 打赏
  • 举报
回复
试试下面的代码吧
HANDLE hfile = CreateFile("c:\\a.txt",GENERIC_WRITE ,
0,0,OPEN_EXISTING,0,0);
//得到文件句柄,必须有写权限
if(hfile != INVALID_HANDLE_VALUE){ //判断句柄有效
FILETIME ftimecreate,ftimeaccess,ftimemodify;
SYSTEMTIME stime;
TDateTime dt = Now(); //得到当前时间
dt = dt-7; //得到7天前的时间
DateTimeToSystemTime(dt,stime); //将TDateTime格式的日期转换为SYSTEMTIME格式
SystemTimeToFileTime(&stime,&ftimemodify);//将SYSTEMTIME格式时间转换为FILETIME格式
dt = dt-14;
DateTimeToSystemTime(dt,stime);
SystemTimeToFileTime(&stime,&ftimeaccess);
dt = dt-21;
DateTimeToSystemTime(dt,stime);
SystemTimeToFileTime(&stime,&ftimecreate);
//上边得到三个FILETIME格式的时间,分别为修改,访问,和创建时间
bool flag = SetFileTime(hfile,&ftimecreate,&ftimeaccess,&ftimemodify);
//这个函数就是修改文件的创建,最后一次访问,最后一次修改时间的函数
if(flag == true){//返回true ,表示修改成功
ShowMessage("修改成功。");
}else{
ShowMessage("修改失败。");
}
CloseHandle(hfile); //关闭文件句柄

}

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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