web-dev-qa-db-fra.com

Comment lire et écrire un fichier en C #

Je veux à la fois lire et écrire dans un fichier. Ça ne marche pas.

static void Main(string[] args)
{
    StreamReader sr = new StreamReader(@"C:\words.txt");
    StreamWriter sw = new StreamWriter(@"C:\words.txt");
}

Comment puis-je lire et écrire dans un fichier en C #?

65
Hey

Vous avez besoin d'un seul flux, ouvert pour la lecture et l'écriture.

FileStream fileStream = new FileStream(
      @"c:\words.txt", FileMode.OpenOrCreate, 
      FileAccess.ReadWrite, FileShare.None);
74
MikeW

N'oubliez pas la voie facile:

    static void Main(string[] args)
    {
        var text = File.ReadAllText(@"C:\words.txt");
        File.WriteAllText(@"C:\words.txt", text + "DERP");
    }
63
Will
var fs = File.Open("file.name", FileMode.OpenOrCreate, FileAccess.ReadWrite);
var sw = new StreamWriter(fs);
var sr = new StreamReader(fs);

...

fs.Close();
//or sw.Close();

L'essentiel est d'ouvrir le fichier avec l'indicateur FileAccess.ReadWrite. Vous pouvez ensuite créer le lecteur/graveur de flux/chaîne/binaire dont vous avez besoin en utilisant le FileStream initial.

33
ScottS

Ce fil semble répondre à votre question: fichier-lecture-écriture-écriture simultanée

En gros, vous avez besoin de déclarer deux FileStream, l’un pour les opérations de lecture, l’autre pour les opérations d’écriture. Writer Filestream doit ouvrir votre fichier en mode 'Ajouter'.

2
mbarthelemy

vous pouvez essayer ceci: le fichier "Filename.txt" sera créé automatiquement dans le dossier bin-> debug à chaque fois que vous exécuterez ce code ou vous pourrez spécifier le chemin du fichier comme: @ "C:/...". vous pouvez vérifier la longueur de "Bonjour" en allant dans le dossier bin -> debug

P.S n'oubliez pas d'ajouter Console.Readline () après cet extrait de code, sinon la console n'apparaîtra pas.

TextWriter tw = new StreamWriter("filename.txt");
        String text = "Hello";
        tw.WriteLine(text);
        tw.Close();

        TextReader tr = new StreamReader("filename.txt");
        Console.WriteLine(tr.ReadLine());
        tr.Close();
1
Ipsita Paul

Fait un code d'amélioration par @Ipsita - pour utilisation lecture asynchrone\écriture fichier I/O

readonly string logPath = @"FilePath";
...
public async Task WriteToLogAsync(string dataToWrite)
{
    TextReader tr = new StreamReader(logPath);
    string data = await tr.ReadLineAsync();
    tr.Close();

    TextWriter tw = new StreamWriter(logPath);
    await tw.WriteLineAsync(data + dataToWrite);
    tw.Close();
}
...
await WriteToLogAsync("Write this to file");
0
Anonimys