請問怎麼改變檔案的修改時間 |
尚未結案
|
millerh
一般會員 發表:10 回覆:10 積分:4 註冊:2004-12-05 發送簡訊給我 |
|
Zard
尊榮會員 發表:24 回覆:396 積分:539 註冊:2003-11-26 發送簡訊給我 |
引言: 有人可以給我一個範例嗎 謝謝 void __fastcall TForm1::Button1Click(TObject *Sender) { // 修改C:\123.txt 的最後修改時間 HANDLE hFile = CreateFile("C:\\123.txt", GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if (hFile != INVALID_HANDLE_VALUE) { SYSTEMTIME SystemTime; FILETIME FileTime; GetSystemTime(&SystemTime); //取得目前系統時間 SystemTimeToFileTime(&SystemTime, &FileTime); //轉換SYSTEMTIME為FILETIME //修改C:\123.txt 的最後修改時間為目前系統時間 SetFileTime(hFile, NULL, NULL, &FileTime); } }發表人 - zard 於 2005/01/22 21:22:55 |
millerh
一般會員 發表:10 回覆:10 積分:4 註冊:2004-12-05 發送簡訊給我 |
引言:我試了一下 但是為什麼Button只有在按第一次有效 按第二次就沒效了?? 還有這一段是幹麻的 SetFileTime(hFile, NULL, NULL, &FileTime); 謝謝~~引言: 有人可以給我一個範例嗎 謝謝void __fastcall TForm1::Button1Click(TObject *Sender) { // 修改C:\123.txt 的最後修改時間 HANDLE hFile = CreateFile("C:\\123.txt", GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if (hFile != INVALID_HANDLE_VALUE) { SYSTEMTIME SystemTime; FILETIME FileTime; GetSystemTime(&SystemTime); //取得目前系統時間 SystemTimeToFileTime(&SystemTime, &FileTime); //轉換SYSTEMTIME為FILETIME //修改C:\123.txt 的最後修改時間為目前系統時間 SetFileTime(hFile, NULL, NULL, &FileTime); } }發表人 - zard 於 2005/01/22 21:22:55 |
Zard
尊榮會員 發表:24 回覆:396 積分:539 註冊:2003-11-26 發送簡訊給我 |
SetFileTime是用來設定檔案時間的 The SetFileTime function sets the date and time that a file was created, last accessed, or last modified. BOOL SetFileTime( HANDLE hFile, const FILETIME* lpCreationTime, //產生時間 const FILETIME* lpLastAccessTime, // 最後存取時間 const FILETIME* lpLastWriteTime // 最後修改時間 ); 只按第一次有效是錯覺, 因為我是用目前系統時間來做為檔案最後修改時間, 所 以你至少要過一分鐘再按才看的出效果(例如經程式修改為9:00, 在這一分鐘內 你按按鈕也看不出效果, 至少要等到9:01才看的出來).發表人 - zard 於 2005/01/22 22:05:01 |
millerh
一般會員 發表:10 回覆:10 積分:4 註冊:2004-12-05 發送簡訊給我 |
引言:可是我過了三分鐘再按然後看檔案時間也沒有改變 要把執行檔關掉從跑再按他才會有改變 是因為開檔沒有關檔的關係嗎??? 還有能把所指定的時間存在檔案中嗎 我希望用下列程式所取出來的修改時間放到另一個檔案中 FormatDateTime("yyyy-mm-dd hh:nn:ss", FileDateToDateTime(FileAge(FileName))) 請問要怎麼用 謝謝~~ 發表人 - millerh 於 2005/01/22 22:51:06SetFileTime是用來設定檔案時間的 The SetFileTime function sets the date and time that a file was created, last accessed, or last modified. BOOL SetFileTime( HANDLE hFile, const FILETIME* lpCreationTime, //產生時間 const FILETIME* lpLastAccessTime, // 最後存取時間 const FILETIME* lpLastWriteTime // 最後修改時間 ); 只按第一次有效是錯覺, 因為我是用目前系統時間來做為檔案最後修改時間, 所 以你至少要過一分鐘再按才看的出效果(例如經程式修改為9:00, 在這一分鐘內 你按按鈕也看不出效果, 至少要等到9:01才看的出來).發表人 - zard 於 2005/01/22 22:05:01 |
Zard
尊榮會員 發表:24 回覆:396 積分:539 註冊:2003-11-26 發送簡訊給我 |
引言: 可是我過了三分鐘再按然後看檔案時間也沒有改變 要把執行檔關掉從跑再按他才會有改變 是因為開檔沒有關檔的關係嗎??? 還有能把所指定的時間存在檔案中嗎 我希望用下列程式所取出來的修改時間放到另一個檔案中 FormatDateTime("yyyy-mm-dd hh:nn:ss", FileDateToDateTime(FileAge(FileName))) 請問要怎麼用 謝謝~~真抱歉, 突然發現我忘了關閉檔案, 所以第二次按的時候無法開檔, 修正如下 < class="code"> void __fastcall TForm1::Button1Click(TObject *Sender) { // 修改C:\123.txt 的最後修改時間 HANDLE hFile = CreateFile("C:\\123.txt", GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if (hFile != INVALID_HANDLE_VALUE) { SYSTEMTIME SystemTime; FILETIME FileTime; GetSystemTime(&SystemTime); //取得目前系統時間 SystemTimeToFileTime(&SystemTime, &FileTime); //轉換SYSTEMTIME為FILETIME //修改C:\123.txt 的最後修改時間為目前系統時間 SetFileTime(hFile, NULL, NULL, &FileTime); CloseHandle(hFile); } } // 取得c:\123.txt的檔案時間並存到c:\time.txt範例 void __fastcall TForm1::Button2Click(TObject *Sender) { AnsiString szFileName = "c:\\123.txt", szFileTime; szFileTime = FormatDateTime("yyyy-mm-dd hh:nn:ss", FileDateToDateTime(FileAge(szFileName))); TStringList* slTime = new TStringList(); slTime->Add(szFileTime); slTime->SaveToFile("c:\\time.txt"); delete slTime; } |
millerh
一般會員 發表:10 回覆:10 積分:4 註冊:2004-12-05 發送簡訊給我 |
引言: 真抱歉, 突然發現我忘了關閉檔案, 所以第二次按的時候無法開檔, 修正如下 < class="code"> // 取得c:\123.txt的檔案時間並存到c:\time.txt範例 void __fastcall TForm1::Button2Click(TObject *Sender) { AnsiString szFileName = "c:\\123.txt", szFileTime; szFileTime = FormatDateTime("yyyy-mm-dd hh:nn:ss", FileDateToDateTime(FileAge(szFileName))); TStringList* slTime = new TStringList(); slTime->Add(szFileTime); slTime->SaveToFile("c:\\time.txt"); delete slTime; }我試了一下 但是他只把c:\\time.txt的修改日期和存取日期改成電腦目前的時間 奇怪 怎麼會這樣???@@ 幫忙一下 急救 謝謝~~~~ 發表人 - millerh 於 2005/01/23 20:05:00 |
Zard
尊榮會員 發表:24 回覆:396 積分:539 註冊:2003-11-26 發送簡訊給我 |
引言:引言: 真抱歉, 突然發現我忘了關閉檔案, 所以第二次按的時候無法開檔, 修正如下 < class="code"> // 取得c:\123.txt的檔案時間並存到c:\time.txt範例 void __fastcall TForm1::Button2Click(TObject *Sender) { AnsiString szFileName = "c:\\123.txt", szFileTime; szFileTime = FormatDateTime("yyyy-mm-dd hh:nn:ss", FileDateToDateTime(FileAge(szFileName))); TStringList* slTime = new TStringList(); slTime->Add(szFileTime); slTime->SaveToFile("c:\\time.txt"); delete slTime; }我試了一下 但是他只把c:\\time.txt的修改日期和存取日期改成電腦目前的時間 奇怪 怎麼會這樣???@@ 幫忙一下 急救 謝謝~~~~ 發表人 - millerh 於 2005/01/23 20:05:00 我試是沒問題的, 我是用c:\123.txt來測試的, 請先確定c:\123.txt存在, 我加 上下面紅字的碼用來判斷c:\123.txt是否存在. 若找到c:\123.txt會把它的檔案 時間字串放到c:\time.txt. void __fastcall TForm1::Button2Click(TObject *Sender) { AnsiString szFileName = "c:\\123.txt", szFileTime; if (!FileExists(szFileName)) { ShowMessage(szFileName " Not Found!"); return; } szFileTime = FormatDateTime("yyyy-mm-dd hh:nn:ss", FileDateToDateTime(FileAge(szFileName))); TStringList* slTime = new TStringList(); slTime->Add(szFileTime); slTime->SaveToFile("c:\\time.txt"); delete slTime; } |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |