Как читать и писать файл в 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();