2013-03-15 9 views
34

Devo usare StringBuilder invece di un elenco di stringhe perché sono bloccato con .NET 1.1 per questo progetto. Mi sta davvero crampando il mio stile, e mi fa sentire come se stessi indossando vecchi pantaloni di leopardo raggedy e trascinando un club bitorzoluto attraverso la terra.Qual è il modo più semplice per scrivere il contenuto di uno StringBuilder in un file di testo in .NET 1.1?

In ogni caso, voglio scrivere una serie di messaggi di debug che ho scritto su un file per studiare a mio piacimento, poiché c'è troppo da vedere sullo schermo (il MessageBox non ha barre di scorrimento). Alcuni dei semplici modi per scrivere un file non sembrano essere disponibili in .NET 1.1. Inoltre non ho accesso a Environment.Newline per separare in modo pulito le righe che aggiungo (AppendLine non è disponibile nemmeno in questa versione arcaica di StringBuilder).

Basta lamentarsi, credo ... Qual è il modo più semplice in .NET 1.1 (C#) di scrivere il contenuto di StringBuilder in un file? Non c'è un'unità "C" sul dispositivo palmare, quindi penso che dovrò scriverlo su "\ hereIAm.txt" o giù di lì.

+9

Amico. Mi dispiace molto. –

+0

@DavidKhaykin scusa, giovane programmatore ingenuo qui. Qual è il problema con il generatore di stringhe? – dckuehn

+3

@dckuehn: Penso che stava solo esprimendo empatia a causa degli strumenti preistorici con cui devo lavorare. –

risposta

54

è sempre possibile accedere alla StreamWriter:

System.IO.StreamWriter file = new System.IO.StreamWriter(@"\hereIam.txt"); 
file.WriteLine(sb.ToString()); // "sb" is the StringBuilder 

Dalla documentazione MSDN: Writing to a Text File (Visual C#).

+5

File StreamWriter = nuovo StreamWriter (@ "\ hereIAm.txt"); file.WriteLine (SB.ToString()); // "SB" è StringBuilder –

6

Non c'è bisogno di un StringBuilder:

string path = @"c:\hereIAm.txt"; 
if (!File.Exists(path)) 
{ 
    // Create a file to write to. 
    using (StreamWriter sw = File.CreateText(path)) 
    { 
     sw.WriteLine("Here"); 
     sw.WriteLine("I"); 
     sw.WriteLine("am."); 
    }  
} 

Ma naturalmente è possibile utilizzare la StringBuilder per creare tutte le linee e scrivere il file in una sola volta.

sw.Write(stringBuilder.ToString()); 

StreamWriter.Write Method (String) (.NET Framework 1,1)

Writing Text to a File (.NET Framework 1.1)

3

StreamWriter è disponibile per NET 1.1. e per lo Compact framework. Basta aprire il file e applicare il ToString al StringBuilder:

StringBuilder sb = new StringBuilder(); 
    sb.Append(......); 

    StreamWriter sw = new StreamWriter("\\hereIAm.txt", true); 
    sw.Write(sb.ToString()); 
    sw.Close(); 

Inoltre, nota che si dice che si desidera aggiungere messaggi di debug al file (come un sasso). In questo caso, il costruttore corretto per StreamWriter è quello che accetta un flag booleano append. Se è vero, tenta di aggiungere un file esistente o crearne uno nuovo se non esiste.

+0

Questo è C# e VB misti ... –

+0

Siamo spiacenti, la traduzione al volo, ora fissa – Steve

56

Per una versione più recente del framework .NET, esiste un modo ancora più semplice per scrivere il contenuto di un oggetto StringBuilder in un file di testo. Può essere fatto con una riga di codice. Potrebbe non essere il più efficiente, ma non era proprio la domanda ora.

System.IO.File.WriteAllText(@"C:\MyDir\MyNewTextFile.txt",sbMyStringBuilder.ToString()); 
+4

Grazie per il pensiero degli altri. Sicuramente mi hai aiutato. – Peter

+0

happy times:) ... a volte abbiamo solo bisogno di essere fatto –

Problemi correlati