2016-09-06 5 views
-1

Ich habe einen Block, der die überschriebene Datei auf meinem Desktop senden soll, aber der Code scheint nicht zu arbeiten, ich verwende eine MVC-Anwendung nicht eine Konsole Anwendung.Wie schreibe ich eine Datei auf den Desktop mit streamwriter

Kann mir jemand sagen, was ich falsch mache oder rate mir, wie ich meine Lösung erreichen kann.

using (var File = new StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "~/ColTexOutputFileTest.csv", false)) // true for appending the file and false to overwrite the file 
{ 
    foreach (var item in outputFile) 
    { 
     File.WriteLine(item); 
    } 
} 
+3

„aber der Code scheint nicht zu funktionieren " - Was meinst du damit? Hast du irgendeine Ausnahme? Wenn ja, poste hier einige Details. –

+3

Wenn dies eine MVC-Anwendung ist, auf deren Desktop erwartet wird, dass dies geschrieben wird? Der Endbenutzer oder der Server? –

Antwort

4

Das Zeichen '~' entfernen.

"\ColTexOutputFileTest.csv" 
1

Dieses Zeichen '~' verwendet Server-Side-Ordner zu finden oder

Für Beispiel Datei, wenn Sie Ordner App_Data Zugriff in abc.xml Datei

HttpContext.Current.Server.MapPath("~/App_Data/abc.xml"); 

wenn Sie Datei gestreamt auf lokaler Zugriff auf Datei als Windows-Pfad

using (var File = new StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\ColTexOutputFileTest.csv", false)) // true for appending the file and false to overwrite the file 
{ 
    foreach (var item in outputFile) 
    { 
     File.WriteLine(item); 
    } 
} 

"~/ColTexOutputFileTest.csv" Änderung es "\ ColTexOutputFileTest.csv"

1

Wie oben in den Antworten erwähnt, ist die ~ das Problem. .Net bietet die Path-Klasse, die zum Verbinden Pfad & Dateinamen eine Methode kombinieren hat & nicht um zu wissen, ob Separatoren benötigt werden:

using (var File = new StreamWriter(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "ColTexOutputFileTest.csv"), false)) 

See: https://msdn.microsoft.com/en-us/library/system.io.path(v=vs.110).aspx

Verwandte Themen