Autor Beitrag
s4nDer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Fr 20.06.08 09:17 
Hallo,
ich sitze grade an einem Programm dran was ganz einfach die Versions Nummern und das Änderungsdatum der Dateien ausliest die sich im gleichen Ordner befinden wie das Programm.
Das Programm sucht dabei alle Dateien mit Hilfe einer Schleife ab und ich packe sie dann in ein Array wo ich sie dann weiter verarbeite.

Mein Problem ist jetzt das ich nich den Pfad aus den Ordnern bekomme die das Programm zusätzlich durchsucht. Ich bekomme zwar den Namen der Datei aus diesen Ordnern aber eben nich den Pfad den ich breuch.

Vielleicht isses auch ganz einfach (wahrscheinlich sogar) aber irgendwie steh ich grad aufn schlauch und wär nett wenn ihr viewlleicht ne lösung hättet.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 20.06.08 10:09 
Hallo und :welcome:!

Ich weiß ja nicht, wie Du die Dateien einliest (Quellcode wäre hier sinnvoll gewesen), aber FileInfo besitzt eine Eigenschaft DirectoryName, welche das Verzeichnis angibt, in dem sich die Datei befindet.

Bin nicht sicher, ob es das ist, was Du meintest. So ganz schlau bin ich nicht aus Deinem Beitrag geworden :nixweiss:

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
s4nDer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Fr 20.06.08 11:00 
Ok, hast du natürlich Recht hier der QuellCode. Mit deiner Variante hab ichs schon probiert kann aber durchaus sein das der Fehler schon irgendwo vorher liegt bei mir.
Mit AllDirectories lass ich das Programm ja überall suchen und wenn ich dann den vollen Pfad haben will gibt er mit z.B. c:\programme\datei.exe,c:\programme\datei2.exe... auch wenn sie noch in einem Unterordner liegen von c:\programme.

ausblenden C#-Quelltext
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:
            String nZeichen = "\\";
            int nStart = 0;

            //Index des letzten "\" im Pfad
            int nIndex = System.Reflection.Assembly.GetExecutingAssembly().Location.LastIndexOf(nZeichen);

            //Pfad in dem sich .exe befindet
            String nPath = System.Reflection.Assembly.GetExecutingAssembly().Location.Substring(nStart, nIndex);

            // Erzeugen und Schreiben in eine Textdatei
            System.IO.StreamWriter sw = new System.IO.StreamWriter("Report.txt");
            {

                //Verzeichnis angeben wo gesucht werden soll
                DirectoryInfo di = new DirectoryInfo(nPath);

                //jedes File im Ordner angeben
                FileInfo[] nDaten = di.GetFiles("*", SearchOption.AllDirectories);

                //Anzahl (Index) der Files ermitteln
                Int32 nArrayLength = nDaten.GetLength(0);

                //Files ausgeben 
                for (int nZaehler = 0; nZaehler < nArrayLength; nZaehler++)
                {

                }            
                sw.Close();
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Fr 20.06.08 11:14 
Du hast doch deine FileInfo-Objekte, von denen du mit .FullPath den kompletten Pfad der Datei bzw mit .DirectoryName den Pfad des verzeichnisses abrufen kannst. Und da kommt auch der richtige Pfad zurück, solltest eventuell deinen Code durchsuchen ob du bei der weiterverarbeitung was daran änderst oder eine andere Variable verwendest o.ä.
s4nDer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Fr 20.06.08 11:23 
Wenn ich mir den kompletten Pfad mit .FullName anzeigen lasse wird mir angezeigt...

c:\programme\Datei.exe
c:\programme\Datei2.exe
c:\programme\Datei3.exe
c:\programme\Datei4.exe

bei den ersten beiden Dateien vielleicht alles supi, aber die 2 letzten Dateien liegen beispielsweise unter c:\programme\system\...
d.h. er lässt den ganzen Unterordner weg.

mit Path.GetFullPath genau das gleiche.
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Fr 20.06.08 11:36 
Ich meine auch, dass Du mit FileInfo die vollständigen und richtigen Informationen bekommen müsstest:
ausblenden C#-Quelltext
1:
2:
3:
foreach(FileInfo fi in nDaten) {
   sw.Write(fi.FullName + Environment.NewLine);
}

Aber vielleicht bringt die Abfrage nach den Dateien mit "*" ein falsches Ergebnis; benutze:
ausblenden C#-Quelltext
1:
FileInfo[] nDaten = di.GetFiles("*.*", SearchOption.AllDirectories);					

Außerdem gibt es für den Ausgangspfad bei WinForms-Anwendungen eine direkte Lösung:
ausblenden C#-Quelltext
1:
String nPath = System.Windows.Forms.Application.StartupPath;					

Jürgen
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Fr 20.06.08 11:40 
Also ich habe deinen Code mal kopiert und bin mal mit Einzelschritten durchgegangen.
In deinem Feld nDaten stehen auf jeden Fall die richtigen Daten (hatte extra einige Unterordner erstellt und darin dateien abgelegt), mir werden auch die Unterordner mit angezeigt.
s4nDer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Fr 20.06.08 11:58 
So erstmal vielen Dank für die schnellen Hilfen und hat jetzt mit...

ausblenden C#-Quelltext
1:
2:
3:
4:
foreach(FileInfo fi in nDaten)
{
   sw.Write(fi.FullName + Environment.NewLine);
}


... geklappt.

Danke JüTho und die anderen natürlich auch.