Pobieranie daty modyfikacji pliku
Ostatnio zmodyfikowano 2011-12-05 14:57
sikora9300 Temat założony przez niniejszego użytkownika |
Pobieranie daty modyfikacji pliku » 2011-12-04 14:44:45 hej czy jest jakiś łatwy sposób na pobranie z pliku jego daty utworzenie, modyfikacji.?? |
|
Diminuendo |
-_- » 2011-12-04 14:56:09 Może "Właściwości"? |
|
malan |
» 2011-12-04 15:05:49 @Diminuendo: kolega zapewne chciałby się do tego dostać z poziomu kod... @sikora9300: jest na pewno jakaś funkcja WinAPI, która umożliwi Ci dostęp do tych danych. Google Twoim przyjacielem :) |
|
Terminator3 |
» 2011-12-04 23:20:35 Windows ma na wszystko swoje funkcje System::IO::File http://msdn.microsoft.com/en-us/library/system.io.file.aspx |
|
Dragonit |
» 2011-12-04 23:56:52 Ja znalazłem takie coś, w kursie cyfrowego barona: W celu odczytania daty utworzenia pliku należy posłużyć się funkcją GetFileTime, jednak żeby wyświetlić d zrozumiałej formie należy dokonać konwersji najpierw do formatu SystemTime, a następnie do DateTime:
|
void __fastcall TForm1::Button1Click( TObject * Sender ) { FILETIME aFT, bFT, cFT; SYSTEMTIME ST; TDateTime DT; AnsiString name = "C:\\nazwa_pliku.roz"; HANDLE hFile = CreateFile( name.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0 ); GetFileTime( hFile, & aFT, & bFT, & cFT ); FileTimeToSystemTime( & aFT, & ST ); DT = SystemTimeToDateTime( ST ); Label1->Caption = FormatDateTime( "dd.mm.yyy hh:nn:ss", DT ); CloseHandle( hFile ); }
Gwoli wyjaśnienia najpierw został utworzony uchwyt do pliku (hFile), następnie pobierana jest do struktury FILETIME data utworzenie, modyfikacji i ostatniego użycia pliku, poprzez funkcję GetFileTime, potem jest przeprowadzana konwersja do struktury SYSTEMTIME, a w ostatecznym rachunku wszystko zostaje przepisane do wirtualnej klasy TDateTime i sformatowane za pomocą funkcji FormatDateTime do wartości typu AnsiString. Zmienna aFT pobiera informację o dacie utworzenia pliku, bFT pobiera informację o dacie modyfikacji pliku, a cFT o dacie ostatniego użycia pliku. W przykładzie zostanie wyświetlona informacja o dacie utworzenia pliku, ponieważ to właśnie zmienna aFT zostaje przepisana za pomocą funkcji FileTimeToSystemTime do struktury SYSTEMTIME, ale oczywiście można w ten sam sposób pobrać wszystkie trzy daty dotyczące pliku.
|
Środowisko programistyczne: Borland C++ Builder 6 |
|
szyx_yankez |
» 2011-12-05 14:57:14 Można tak np.
#include <ctime> #include <cstdio> #include <sys/types.h> #include <sys/stat.h> int main() { char file[] = "plik.txt"; char t[ 100 ] = ""; struct stat b; if( !stat( file, & b ) ) { strftime( t, 100, "%d/%m/%Y %H:%M:%S", localtime( & b.st_mtime ) ); printf( "\nData ostatniej modyfikacji = %s\n", t ); } else { printf( "Error\n" ); } getchar(); return 0; }
|
|
« 1 » |