Dateiinfo in einem Verzeichnis



  • Hallo,

    ich versuche mich gerade ein wenig in C# einzuarbeiten.

    Mein Ziel: Eine Applikation (c# Windows forms basiert) die in einem vorgebenden Verzeichnis von sämtlichen vorliegenden Dateien die Dateiinfo (nur Äderungsdatum!) ausliest und gegen ein vorgegebenes Datum (ist fest in im Code vorgegeben) vergleicht.
    Weicht eine Datei ab soll deren Name untereinander in eine einfache Text-Datei geschrieben werden.



  • Was hast du bisher versucht? Wo hast du Probleme?



  • Bisher habe ich eine Applikation die in einem Fenster öffnet, den Dialog mit Ortsauswahl (Pfad). Wobei ich das ja eigentlich fix haben möchte, ich dachte mir so wäre es vielleicht für den Anfang einfacher.

    Was ich bisher nicht so klar rausfinden konnte, wie kann ich das Änderungsdatum auslesen und in welchem Format liegt es dann vor. Als Konsolenprogramm hatte ich es schon mal, da war allerdings ein sehr kryptischer String in einem eher unbrauchbaren Format..



  • Dann guck dir mal die FileInfo-Klasse an.

    In Kombination mit Directory.GetFiles(path) solltest du sicherlich was finden können 🙂



  • Ich würde ja eher direkt zu DirectoryInfo.GetFiles raten. Das liefert direkt ein Array von "FileInfo" zurück.

    DirectoryInfo myDirectory = new DirectoryInfo(@"D:\Dateien");
    
    foreach(FileInfo info in myDirectory.GetFiles(string.empty))
    {
        // tu was auch immer du tun willst mit der FileInfo
    }
    

    [spoiler]
    Der kürzeste Weg der mir einfällt:

    DateTime dtTest = new DateTime(year, month, day);
    
    foreach (FileInfo file in new DirectoryInfo(@"D:\Entwicklung").GetFiles().Where((x) => x.LastWriteTime.Date < dtTest.Date))
    {
        // datei namen in textdatei schreiben 
    }
    

    [/spoiler]



  • vielleicht überseh ich ja was aber bei:

    foreach (FileInfo file in new DirectoryInfo(@"D:\").GetFiles().Where((x) => x.LastWriteTime.Date < dtTest.Date))
    

    bekomme ich mehrere (11) Fehler ausgeschmissen

    - Error 1 Invalid token 'foreach' in class, struct, or interface member declaration

    - Error 2 ; expected

    - Error 3 Method must have a return type

    - Error 4 Type expected

    usw.



  • Du kannst das auch so machen:

    string date = File.GetLastWriteTime(file).ToShortDateString();
                        DateTime now = DateTime.Now;
                        DateTime dt = File.GetLastWriteTime(file).ToLocalTime();
                        TimeSpan ts = new TimeSpan();
                        ts = now - dt;
                        double days = ts.TotalDays;
                        string info = date + "  |  " + dt + "  |  " + days.ToString("F2");
                        label1.Text = file;
                        label2.Text = info;
    


  • so in der Art hatte ich es in meinem Konsolenprogramm

    cout <<"Testlauf startet...\n\n";
    
    	if (write_new_dat==1)
    	{
    	printf("Datei neu erzeugen\n");
    	remove(dat_name); // Datei loeschen
    
    	fstream f;
        f.open(dat_name, ios::out);
        f << "Dieser Text geht in die Datei :)" << endl;
    	f.close();
    	}
    	else
    	{
        printf("Alte Datei auswerten\n");
    	}
    
    	struct _stat buf;
    		int result;
    		char timebuf[26];
    		char* filename = dat_name;
    		errno_t err;
    
    		result = _stat( filename, &buf );
    
          // Output: 
    
          err = ctime_s(timebuf, 26, &buf.st_mtime);
          if (err)
          {
             printf("Ungueltiges Argument bei ctime_s.");
             exit(1);
    
    	  }
          printf( "Letzte Aenderung: %s", timebuf );
    

    aber wie gesagt hilft mir nicht so wirklich weiter... fand ich auch ein wenig kryptisch



  • Ok, du arbeitest mit C++ nicht mit C#. - Ich bin raus. 🙄



  • Ne, er arbeitet schon mit C#. Er hat bloss keinen Plan und möchte Schulaufgaben gemacht bekommen.



  • Ja ich wollte es jetzt mit C# und Windows Forms machen weil ich aus dem was ich bisher mitbekommen habe dachte es wäre einfacher und schneller umzusetzen.

    Schulaufgaben gemacht... da muss ich enttäuschen aus dem Alter bin ich auch raus.

    Na ja, dann werde ich einfach weiter selber probieren und versuchen mich schneller durchs C+ Buch zu arbeiten.

    Danke! 🙄



  • Tipp: den Code mußt du innerhalb einer Methode z.B. Main() schreiben, nicht direkt als Klassenmember...


Log in to reply