Как читать и писать файл в C#

Я хочу как читать, так и писать в файл. Это не работает

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

Как я могу читать и писать в файл в C#?

4 ответа

Вам нужен один поток, открытый как для чтения, так и для записи.

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

Не забудьте про легкий маршрут:

    static void Main(string[] args)
    {
        var text = File.ReadAllText(@"C:\words.txt");
        File.WriteAllText(@"C:\words.txt", text + "DERP");
    }
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();

Главное - открыть файл с флагом FileAccess.ReadWrite. Затем вы можете создать любой поток /String/Binary Reader/Writers, который вам нужен, используя начальный FileStream.

Эта тема, кажется, отвечает на ваш вопрос: одновременное чтение-запись-файл

По сути, вам нужно объявить два FileStream, один для операций чтения, другой для операций записи. Writer Filestream должен открыть ваш файл в режиме "Добавить".

Сделал код улучшения от @Ipsita - для использования асинхронного чтения / записи файлового ввода-вывода

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");

Вы можете попробовать следующее: файл "Filename.txt" будет автоматически создаваться в папке bin->debug каждый раз, когда вы запускаете этот код, или вы можете указать путь к файлу, например: @"C:/...". вы можете проверить наличие "Hello", перейдя в корзину -> папка отладки

PS не забудьте добавить Console.Readline() после этого фрагмента кода, иначе консоль не появится.

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();
Другие вопросы по тегам