2016-07-27 18 views
0

Ich habe eine Konfigurationsdatei namens one_two.config.txt enthält den Pfad einer Protokolldatei geschrieben werden.Lesen Sie die Konfigurationsdatei und erstellen Sie eine Protokolldatei

Ich möchte diese Zeile ('comdir = C: \ Users \ One \ Desktop') lesen und dann eine neue Protokolldatei in einem bestimmten Verzeichnis erstellen. Die Protokolldatei haben wird einige Daten (Zeit/Datum/ID usw.)

Hier ist, was ich habe jetzt ist:

    string VarSomeData = ""; // Contains Data that should be written in log.txt 

        for (Int32 i = 0; i < VarDataCount; i++) 
        {        

         csp2.DataPacket aPacket; 


         VarData = csp2.GetPacket(out aPacket, i, nComPort); 


         VarSomeData = String.Format("\"{0:ddMMyyyy}\",\"{0:HHmmss}\",\"{1}\",\"{2}\",\"{3}\" \r\n", aPacket.dtTimestamp, VarPersNr, aPacket.strBarData, VarId.TrimStart('0')); 


         string line = ""; 
         using (StreamReader sr = new StreamReader("one_two.config.txt")) 
         using (StreamWriter sw = new StreamWriter("log.txt")) 
         { 
          while ((line = sr.ReadLine()) != null) 
          { 
           if((line.StartsWith("comdir=")) 
           { 
           // This is wrong , how should i write it ? 
           sw.WriteLine(VarSomeData); 
           } 
          } 
         } 
        } 

Im Augenblick ist die Protokolldatei in demselben Verzeichnis wird erstellt als die Konfigurationsdatei.

+1

Möchten Sie die Datei kopieren? –

+0

Wenn es für Sie arbeitet. Dann ist es gut. Die Frage ist nicht sehr klar. Bitte fügen Sie weitere Details hinzu, um uns verständlich zu machen. Was genau suchst du? –

+0

@AlekseyL. Ich möchte eine Datei lesen, wo ich bereits 'comdir = C: \ Benutzer \ One \ Desktop' geschrieben habe, diese Zeile lesen und eine neue Datei auf dem Desktop mit dem Namen 'log.txt' erstellen –

Antwort

3

Dies sollte Ihnen den Einstieg:

string line; 
using (StreamReader file = new StreamReader("one_two.config.txt")) 
using (StreamWriter newfile = new StreamWriter("log.txt")) 
{ 
    while ((line = file.ReadLine()) != null) 
    { 
     newfile.WriteLine(line); 
    } 
} 
0
//Input file path 
string inPath = "C:\\Users\\muthuraman\\Desktop\\one_two.config.txt"; 
//Output File path 
string outPath = "C:\\Users\\muthuraman\\Desktop\\log.txt"; 
// Below code reads all the lines in the text file and Store the text as array of strings 
string[] input=System.IO.File.ReadAllLines(inPath); 
//Below code write all the text in string array to the specified output file 
System.IO.File.WriteAllLines(outPath, input); 
+0

Während dieses Code-Snippet die Frage lösen kann, hilft [einschließlich einer Erklärung] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich, die Qualität Ihres Posts zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. Bitte versuchen Sie auch nicht, Ihren Code mit erläuternden Kommentaren zu überladen, da dies die Lesbarkeit sowohl des Codes als auch der Erklärungen verringert! – FrankerZ

0

Also im Grunde Sie eine Konfigurationsdatei haben den Pfad einer Protokolldatei enthält, zu schreiben; aber Sie sagen nichts über den Inhalt dieser Protokolldatei aus. Sie wollen nur wissen, wo Sie es erstellen, korrigieren?

So etwas wie

string ConfigPath = "one_two.config.txt"; 
string LogPath = File.ReadAllLines(ConfigPath).Where(l => l.StartsWith("comdir=")).FirstOrDefault() 
if (!String.IsNullOrEmpty(LogPath)) { 
    using (TextWriter writer = File.CreateText(LogPath.SubString(7))) { 
    writer.WriteLine("Log file created."); 
    } 
} 

Sie können auch die Konfigurationszeile auf diese Weise mit ein wenig mehr Code lesen, aber Sie werden eine bessere Leistung

string LogPath = null; 
using (StreamReader file = new System.IO.StreamReader(ConfigPath)) { 
    while((line = file.ReadLine()) != null) { 
    if (line.StartsWith("comdir=")) 
     LogPath = line.Substring(7); 
    } 
} 

Für die Konfigurationsdatei, möchten Sie vielleicht Erwägen, eine C# -Klasse zu verwenden, die Sie als XML-Datei serialisieren und dann beim Starten der Anwendung deserialisieren. Dann haben Sie die Konfiguration bereits innerhalb einer Klasse verfügbar, wann immer Sie sie benötigen.

+0

Hallo. Habe meinen Beitrag editiert, dort zeige ich was ich jetzt habe. Und die Logdatei enthält Daten wie (Uhrzeit/Datum/ID etc.) –