Laden...

File Exists

Erstellt von Arthuro vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.023 Views
A
Arthuro Themenstarter:in
147 Beiträge seit 2007
vor 16 Jahren
File Exists

Ich will mit einer If Anweisung schaun ob eine Datei da ist oder nicht zurzeit habe ich das nur mit laufwerks angabe. Ich möchte aber das meine Datei dort gespeichert wird wo die .exe des Projekts ausgeführt wird.

Habe es versucht ohne Laufwerksbuchstabe hat leider nicht geklappt, wäre für hilfe sehr dankbar.

string path = @"C:\BMI-Werte.xls";
if (File.Exists(path)
{
}
else
{
}
worksheet.SaveAs(@"C:\BMI-Werte.xls", missing, missing, missing, missing, missing, missing, missing, missing, missing);
343 Beiträge seit 2007
vor 16 Jahren

Hallo Arthuro!

Im Openbook wird meist Application.StartupPath benutzt.
Ich persönliche schreibe einfach nur die Datei ohne Pfadangabe, was jedoch nicht ganz so sauber ist denk ich, zumindest hat es bei mir schon mal zu Komplikationen geführt.
Ich denke StartupPath dürfte da nicht ganz so falsch sein, wenn es auch im Galileo Openbook steht. 😁

Mfg Preli

[- www.saftware.net -](http://www.saftware.net/)
A
Arthuro Themenstarter:in
147 Beiträge seit 2007
vor 16 Jahren
AppExcel.Workbooks.Open(System.Windows.Forms.Application.StartupPath, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);

Leider klappt das mit Application.StartupPath nicht, aber damit wäre mein Problem mit der IF-Anweisung ja auch net geklärt wie ich das überprüfe ich will ja nicht schaun ob eine datei in dem Path ist sonder ich möchte ja das Überprüft wird ob die Datei vorhanden ist.

A
Arthuro Themenstarter:in
147 Beiträge seit 2007
vor 16 Jahren

Also ich habe es mit Application.StartUp versucht er speichert mir die Datei aber leider nicht da wo die .exe ist. Wenn ich Debuge Speichert er es mir im Bin Ordner und net im Debug ordner wo die .exe liegt. Habe die Datei nun aufm Desktop kopiert und versucht jetzt hat er das wieder im Bin Ordner kopiert. Also mit Application.StartUp funktioniert das leider nicht....

😦

343 Beiträge seit 2007
vor 16 Jahren

Ich weiß zwar nicht genau was du falsch machst, bzw. wo das Problem liegt, aber bei mir funktioniert alles tadellos.

Hab im selben Verzeichnis wie meine Exe-Datei die Datei "test.txt" erstellt und folgenden Code ausgeführt.


string file = "test.txt";
if (System.IO.File.Exists(Application.StartupPath+"\\"+file))
	MessageBox.Show("ja");
else MessageBox.Show("nein");

Wenn die Datei existiert wird ja ausgegeben sonst nein. Klappt alles wie es klappen soll.
Ich denke der Fehler liegt irgendwo in deinem Code.

Mfg Preli

//edit:
Ich denke Application.StarupPath ist schon das was du brauchst. (siehe MSDN http://msdn2.microsoft.com/en-us/library/system.windows.forms.application.startuppath.aspx)

Gets the path for the executable file that started the application, not including the executable name.

[- www.saftware.net -](http://www.saftware.net/)
R
206 Beiträge seit 2007
vor 16 Jahren

evtl nur Verknüpfung kopiert...

Directory.GetCurrentDirectory()

sollte auch gehen...

Aber StartUp muss eigentlich auch gehen ô_O

343 Beiträge seit 2007
vor 16 Jahren

Original von Riv3r

Directory.GetCurrentDirectory()  

sollte auch gehen...

GetCurrentDirectory ruft das aktuelle Arbeitsverzeichnis der Anwendung ab. (siehe MSDN) Dies ist in den meisten Fällen das gleiche Verzeicnis wie die Exe-Datei, muss aber nicht sein.

Mfg Preli

[- www.saftware.net -](http://www.saftware.net/)
R
206 Beiträge seit 2007
vor 16 Jahren

Da hast du Recht...

Aber Programmdateien legt man meistens sowieso ins Arbeitsverzeichnis...

Besser ist aber wirklich deine Lösung.

1.433 Beiträge seit 2006
vor 16 Jahren

Wenn Du die Datei dort speichern willst wo Deine Applikation startet, dann ist dass:

 Environment.CurrentDirectory

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

A
Arthuro Themenstarter:in
147 Beiträge seit 2007
vor 16 Jahren

Also wenn ich nur:

worksheet.SaveAs(@"BMI-Werte.xls" /*"C:\BMI-Werte.xls"*/, missing, missing, missing, missing, missing, missing, missing, missing, missing);

Wird es in Eigene Datei gespeichert.

Mache ich:

worksheet.SaveAs(@System.Windows.Forms.Application.StartupPath /*"C:\BMI-Werte.xls"*/, missing, missing, missing, missing, missing, missing, missing, missing, missing);

Wird es im Bin verzeichnis gespeichert und nicht im Debug Verzeichnis wo die exe drine ist.

Mache ich: (Directory.GetCurrentDirectory())

worksheet.SaveAs(@Directory.GetCurrentDirectory() /*"C:\BMI-Werte.xls"*/, missing, missing, missing, missing, missing, missing, missing, missing, missing);

Wird es auch im Bin Ordner gespeichert und nicht im Debug.

Noch jemand Vorschläge ?

R
206 Beiträge seit 2007
vor 16 Jahren

Mit

string[] asPfade = File.ReadAllLines(Environment.CurrentDirectory + @"\AllgemeineVariablen.ini");

lese ich die Datei AllgemeineVariablen.ini die im Ordner der exe (bei mir dll) liegt - und alles funktioniert...

Solle eigenltich so funktionieren...

Schau dir halt mal im Debug an was Environment.CurrentDirectory zurückgibt!

MfG

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo zusammen,

nochmal zur Klarstellung: Das Arbeitsverzeichnis (Environment.CurrentDirectory) muss nicht mit dem Verzeichnis übereinstimmen, in dem die exe liegt (Application.StartupPath). Und wenn man einen reinen Dateinamen (ohne Pfad) angibt, dann wird die Datei eh in Environment.CurrentDirectory gespeichert. Insofern ist die direkte Angabe von Environment.CurrentDirectory eh witzlos.

Hallo Arthuro,

dein Problem ist, dass du nur Application.StartupPath angibst. Du musst aber natürlich Application.StartupPath und den Dazeinamen kombinieren (Path.Combine).

herbivore

A
Arthuro Themenstarter:in
147 Beiträge seit 2007
vor 16 Jahren

Danke , an die antworten bin gerade noch selbst drauf gekommen, dachte ganze zeit kann nicht daran liegen war wohl ein logik fehler...

Hiermit klappt es nun :

Directory.GetCurrentDirectory() + "\BMI-Werte.xls"

LG Arthuro

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Arthuro,

wie ich schon sagte: Wenn du immer in dem Verzeichnis speichern willst, wo die exe liegt, dann musst du Application.StartupPath verwenden.

Und verwende statt + besser Path.Combine.

herbivore

R
122 Beiträge seit 2007
vor 16 Jahren

Übrigens: Im CompactFramework 2.0 funktionierten bei mir alle folgenden Aufrufe nicht:

Application.StartupPath
System.IO.Directory.GetCurrentDirectory()
Environment.CurrentDirectory
Directory.GetCurrentDirectory()

Funktioniert hat folgendes:
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName ().CodeBase)