Autor |
Beitrag |
avoid
      
Beiträge: 230
Erhaltene Danke: 4
MSDos, WinXP32, Win764, Win10, Android, Debian
msl (mIRC edit), html & php & Java (DreamweaverMX), Basic (picaxe PE6), C (Arduino IDE), C# (vs2010,2015,2017,2019,Unity,Android Studio)
|
Verfasst: Do 05.07.12 14:42
Ich habe ein Verzeichniss in dem sich mehrere Text Dateien befinden.
Bei den Dateien handelt es sich um Log Dateien die jeweils um die 100kbyte groß sind.
Nun möchte ich ein kleines Tool schreiben das diese Logdateien auswerten kann.
Dazu zähle ich folgendes:
- Den Inhalt der Dateien einlesen und aufbereitet darstellen. (z.b. als sortierte Tabelle)
- Filtermöglichkeiten um z.b. den zeitlichen Rahmen ein zu grenzen.
- Druck- und Speichermöglichkeit der Auswertung.
Ich glaube mal das ist heutzutage so der Standart.
---------------------------------
Eine Datei ein zu lesen bekomm ich hin aber wie lese ich einen kompletten Ordner ein?
Und wie kann ich eine tabelarische Darstellung der Daten realisieren?
Kann ich dazu ein Datagrid verwenden, wenn ja wie?
Oder macht es sich evtl. doch besser ein Multiline-Textfeld und Formatiertung zu arbeiten?
---------------------------------
Gruß, avoid
_________________ Gute Fragen sind wie ein wissenschaftliches Experiment. Sie setzen eine Menge Wissen bereits voraus.
bitcoin:1J5dgQQp8eUy8wkUxyztBUVCkCpo5MQEQs?label=Danke
|
|
traceurmicha
      
Beiträge: 160
Erhaltene Danke: 9
Win XP SP2, Win 7 Pro., Ubuntu 9, Debian 5
C#, ASP.NET, MSSQL, PHP(Microsoft Visual Studio 2010 Ultimate, SharpDevelop 4, Microsoft SQL Server2008 Express, Eclipse for PHP)
|
Verfasst: Fr 06.07.12 11:22
Haben die Dateien immer den gleichen Namen? Oder haben Sie Namen die irgendwie Speziell aufgebaut sind?
Sind immer gleichviele Dateien im Ordner?
Hast du schonmal selbst gesucht? Wenn ja dann müsstest du auf die Directory Klasse gestoßen sein. Dann schau dir da auch mal das hier an.
Ich denke mit den Infos kommst du schonmal weiter. Wie du die Dateien darstellst ist dir überlassen. Schau dir doch einfach mal das Datagrid an und wie es funktioniert.
Lesen ist Macht! 
_________________ Programmieren ist ein Rennen zwischen den Softwareentwicklern, die versuchen größere und bessere idiotensichere Programme zu schreiben und dem Universum, welches versucht größere und bessere Idioten zu produzieren. Zur Zeit liegt das Universum in Führung.
|
|
avoid 
      
Beiträge: 230
Erhaltene Danke: 4
MSDos, WinXP32, Win764, Win10, Android, Debian
msl (mIRC edit), html & php & Java (DreamweaverMX), Basic (picaxe PE6), C (Arduino IDE), C# (vs2010,2015,2017,2019,Unity,Android Studio)
|
Verfasst: Mo 09.07.12 12:10
die dateinamen sind alle acht zeichen lang und im hex format.
ist eine datei voll genug wird eine neue angelegt.
also kann ich nie wissen wieviele dateien gerade im ordner sind.
die reihenfolge der daten kann ich auch nicht am dateinamen
sondern nur am gelogten zeitstempel fest machen.
also muß ich wohl abfragen wieviele dateien gerade im ordner sind
und dann mit einer schleife eine nach der anderen einlesen.
am besten lese ich die daten in ein mehrdimensionales array ein
und dieses stelle ich dann in einem datagrid dar.
darin kann ich dann die sortirung einfach per klick erledigen.
Danke schon mal für den tip mit der Directory-Klasse.
------nachtrag-------
ich habe jetzt mal das hier als beispiel probiert.
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| string pfad = "C:\\Programme"; if (!Directory.Exists(pfad)) { MessageBox.Show(pfad + "\n" + "konnte nicht gefunden werden."); } if (Directory.Exists(pfad)) { textBox1.Text = pfad; folderBrowserDialog1.SelectedPath = pfad; label1.Text = "Es sind " + Directory.GetFiles(pfad).Length + " Dateien in " + pfad; } |
was passiert wenn man manuell in der textbox rum tipt ist erst mal nebensache.
is ja nur ein funktionelles beispiel.
jetzt werd ich mal versuchen alle dateien mit der endung .log auf zu listen.
-----nochmal---nachtrag-----
C#-Quelltext 1: 2: 3: 4: 5:
| string[] dateien = Directory.GetFiles(pfad); foreach (string dateiname in dateien) { richTextBox1.Text += dateiname + "\n"; } |
damit hab ich jetzt eine schöne auflistung aller dateien im ordner.
kann ich die auch noch auf den datei typ .log filtern?
_________________ Gute Fragen sind wie ein wissenschaftliches Experiment. Sie setzen eine Menge Wissen bereits voraus.
bitcoin:1J5dgQQp8eUy8wkUxyztBUVCkCpo5MQEQs?label=Danke
|
|
Th69
      

Beiträge: 4799
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Mo 09.07.12 15:19
Hallo,
einfach diese Directory.GetFiles(string, string)-Überladung mit "*.log" aufrufen.
|
|
avoid 
      
Beiträge: 230
Erhaltene Danke: 4
MSDos, WinXP32, Win764, Win10, Android, Debian
msl (mIRC edit), html & php & Java (DreamweaverMX), Basic (picaxe PE6), C (Arduino IDE), C# (vs2010,2015,2017,2019,Unity,Android Studio)
|
Verfasst: Mo 09.07.12 16:23
in meinem fall also z.b. so.
C#-Quelltext 1:
| string[] dateien = Directory.GetFiles(pfad,"*.log"); |
klappt wunderbar.
jetzt kann ich mich daran machen die log dateien in's array zu packen.
der inhalt so einer logdatei ist wie folgt aufgebaut:
Tag.Monat Stunde:Minute Info1 Info2 Info3 .......
ich kann also erst mal mit Split den inhalt jeder zeile am leerzeichen trennen
und dann stück für stück in ein array packen.
eine zeile nach der anderen, eine datei nach der anderen, bis alles eingelesen ist.
mal kucken ob ich das hin bekomme.
_________________ Gute Fragen sind wie ein wissenschaftliches Experiment. Sie setzen eine Menge Wissen bereits voraus.
bitcoin:1J5dgQQp8eUy8wkUxyztBUVCkCpo5MQEQs?label=Danke
|
|
avoid 
      
Beiträge: 230
Erhaltene Danke: 4
MSDos, WinXP32, Win764, Win10, Android, Debian
msl (mIRC edit), html & php & Java (DreamweaverMX), Basic (picaxe PE6), C (Arduino IDE), C# (vs2010,2015,2017,2019,Unity,Android Studio)
|
Verfasst: So 15.07.12 17:40
also aktuell habe ich das hier:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51:
| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Collections; namespace Logauswerter { public partial class Form1 : Form { ArrayList daten = new ArrayList(); public string pfad = Application.StartupPath; public Form1() { InitializeComponent(); einlesen(); }
private void einlesen() { string[] dateien = Directory.GetFiles(pfad, "*.log"); foreach (string dateiname in dateien) { StreamReader input = new StreamReader(dateiname); while (!input.EndOfStream) { daten.Add(input.ReadLine()); } input.Close(); } for (int i = 0; i < daten.Count; i++) { string line = daten[i].ToString(); string[] line_array = line.Split(' '); label1.Text += line_array[0] + "\n"; label2.Text += line_array[1] + "\n"; for (int y = 2; y < line_array.Length; y++) { label3.Text += line_array[y] + " "; } label3.Text += "\n"; } label4.Text = "Status: " + daten.Count + " zeilen aus " + dateien.Length + " dateien geladen."; } } } |
das lässt sich doch sicher noch um einiges vereinfachen mit einem mehrdimensionalen array oder?
_________________ Gute Fragen sind wie ein wissenschaftliches Experiment. Sie setzen eine Menge Wissen bereits voraus.
bitcoin:1J5dgQQp8eUy8wkUxyztBUVCkCpo5MQEQs?label=Danke
|
|
|