Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Pobieranie daty modyfikacji pliku

Ostatnio zmodyfikowano 2011-12-05 14:57
Autor Wiadomość
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.??
P-45130
Diminuendo
-_-
» 2011-12-04 14:56:09
Może "Właściwości"?
P-45131
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 :)
P-45133
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
P-45180
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:

C/C++
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
P-45182
szyx_yankez
» 2011-12-05 14:57:14
Można tak np.
C/C++
#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;
}
P-45184
« 1 »
  Strona 1 z 1