2016-06-25 7 views
1

Ich versuche, einen neuen Datensatz zu einer Textdatei in einem Ordner hinzuzufügen, der sich in meiner Konsolenanwendung befindet.Probleme beim Hinzufügen einer neuen Zeile zur Textdatei

open System.IO 

let name = "Fred Thompson" 

let addLine (name: string) = 
    use wr = StreamWriter("c:\\tempsource\\test.txt") 
    wr.WriteLine(name) 
    wr.Close 

Als ich im interaktiven Fenster laufen, bekomme ich diese: Warnung FS0760: Es wird empfohlen, dass Objekte, die IDisposable-Schnittstelle unterstützt werden erstellt, um die Syntax ‚neuen Typ (args)‘, anstatt ‚Type (args) 'oder' Type 'als Funktionswert, der den Konstruktor darstellt, um anzuzeigen, dass Ressourcen dem generierten Wert gehören können.

Zusätzlich eine blaue squiggly Linie unter der Datei - ich habe es für das Beispiel verkürzt. Ich bekomme auch die blaue Linie mit dem vollen Pfad.

Nachschlagen dieser Warnung gab mir diese Update warning message when creating IDisposable without 'new' und ich habe keine Ahnung, muss sich diesem nähern.

Dank

+4

nur sagen, ‚new Stream‘ – s952163

+0

Dank blaue Wellenlinie weg ist. Aber wenn ich es im interaktiven Fenster ausführe, wird der String nicht in die test.txt-Datei eingetragen. –

+0

anhängen? vielleicht hinzufügen, wahr nach dem Weg. Führen Sie dann Addline "Fred Thompson" – s952163

Antwort

3

Der StreamWriter Konstruktor nur einen Weg nehmen erzeugt einen Strom, der die Datei überschreibt. true Pass ermöglicht anhängen:

open System.IO 

let name = "Fred Thompson" 

let addLine (name: string) = 
    use wr = new StreamWriter("c:\\tempsource\\test.txt", true) 
    wr.WriteLine name 

addLine name 
+1

Ich würde befürworten, den 'Close'-Aufruf (der parens BTW benötigt) aus Ihrer Antwort herauszunehmen, da es strikt _un_-notwendig ist. – ildjarn

+0

@CaringDev Danke, dass es im interaktiven Fenster funktioniert; jetzt, wenn ich es über die Schaltfläche Start ausführen, erhalte ich diesen Fehler: Eine nicht behandelte Ausnahme des Typs 'System.UnauthorizedAccessException' aufgetreten in mscorlib.dll Zusätzliche Informationen: Zugriff auf den Pfad 'c: \\ users \\ tempsource \ test. txt 'wird abgelehnt. –

+0

@ildjarn danke Ich habe es entfernt. –