#c_sharp #файлы
Вопрос по поводу оператора using.
Почему когда я пишу так, то в файл ничего не пишется.
static void Main(string[] args)
{
string[] lines = { "First line", "Second line", "Third line" };
string docPath = Path.Combine(Directory.GetCurrentDirectory(), "WriteLines.txt");
StreamWriter outputFile = new StreamWriter(docPath);
outputFile.WriteLine(lines[0]);
}
А если по примеру с msdn делать, то всё работает. Какую роль играет оператор using
в данном примере? Да и в общем объяснение "Предоставляет удобный синтаксис, обеспечивающий
правильное использование объектов IDisposable" мне непонятно.
static void Main(string[] args)
{
string[] lines = { "First line", "Second line", "Third line" };
string docPath = Path.Combine(Directory.GetCurrentDirectory(), "WriteLines.txt");
using (StreamWriter outputFile = new StreamWriter(docPath))
{
foreach (string line in lines)
outputFile.WriteLine(line);
}
}
Ответы
Ответ 1
using (StreamWriter outputFile = new StreamWriter(docPath)) { foreach (string line in lines) outputFile.WriteLine(line); } // вызывает outputFile.Dispose(), который выталкивает на диск данные из буфераОтвет 2
using автоматически Dispose и Flush вызывает. Без using можно тоже самое написать: string[] lines = { "First line", "Second line", "Third line" }; string docPath = Path.Combine(Directory.GetCurrentDirectory(), "WriteLines.txt"); StreamWriter outputFile = new StreamWriter(docPath); outputFile.AutoFlush = true; foreach (string line in lines) outputFile.WriteLine(line); outputFile.Dispose(); Ну и в try/finally ещё заключить нужно.
Комментариев нет:
Отправить комментарий