Читання Файлів За Допомогою StreamReader
Ви можете відкривати та читати файли за допомогою мови програмування C#.
Для читання файлу створюється новий об'єкт StreamReader
. Об'єкт StreamReader
приймає шлях до файлу.
Термін "об'єкт" стане зрозумілішим у наступних розділах, однак для розуміння — об'єкт це просто екземпляр певного типу даних, а StreamReader
є типом даних так само, як і int
чи float
. Тому значення 1
, 2.5f
та "Hello World"
технічно можна назвати "об'єктами" типів даних int, float та string відповідно.
index.cs
1StreamReader fileVarName = new StreamReader(fullPath);
Тут fileVarName
позначає ім'я змінної, у якій буде збережено об'єкт StreamReader, а fullPath
— це повний шлях до файлу у вигляді рядка.
Наприклад, можна відкрити файл "text.txt" на Робочому столі, який має шлях C:/Users/Admin/Desktop/text.txt
:
index.cs
1StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Також можна використати неявне оголошення, щоб зробити синтаксис трохи коротшим: var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Розгляньте файл text.txt
, який містить наступний вміст:
text.txt
12345This is some example text
Об'єкт StreamReader
має метод ReadLine
, який зчитує один рядок з файлу та повертає його:
index.cs
1234var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);
Вивід:
This
Метод ReadLine
автоматично переміщує курсор на наступний рядок, тому при повторному виклику він зчитує наступний рядок, якщо такий існує, інакше повертає null
(нічого):
index.cs
12345678var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); Console.WriteLine(textFile.ReadLine()); // This Console.WriteLine(textFile.ReadLine()); // is Console.WriteLine(textFile.ReadLine()); // some Console.WriteLine(textFile.ReadLine()); // example Console.WriteLine(textFile.ReadLine()); // text Console.WriteLine(textFile.ReadLine()); // NULL
Вивід:
This
is
some
example
text
Для зчитування всіх рядків з файлу можна використати цикл while
з умовою, яка перевіряє, чи наступний рядок не є null
. Нижче наведено простий спосіб, як це зробити:
index.cs
12345678var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); while(line != null) { Console.WriteLine(line); line = textFile.ReadLine(); }
Вивід:
This
is
some
example
text
Ви можете зробити наведений вище код трохи акуратнішим, використовуючи певний прийом. Для цього розглянемо оператори присвоєння. Оператор присвоєння також має значення, яке повертається, і це значення, яке присвоюється. Це можна зрозуміти на прикладі:
index.cs
12int a; Console.WriteLine(a = 7);
Вивід:
7
Виводиться 7
, оскільки вираз a = 7
повертає 7
, тобто значення, яке присвоюється змінній a
.
Цю властивість можна використати для цікавих рішень, наприклад, присвоїти одне й те саме значення кільком змінним в одному виразі:
index.cs
123456789int a = 1; int b = 1; int c = 1; a = b = c = 9; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);
Вивід:
9
9
9
Використовуючи цю інформацію, можна змінити код для читання файлів, зробивши його коротшим шляхом видалення зайвих рядків коду:
index.cs
1234567var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while((line = textFile.ReadLine()) != null) { Console.WriteLine(line); }
Усередині умови спочатку використовується оператор присвоєння line = textFile.ReadLine()
, який автоматично оновлює змінну line
, а потім перевіряє, чи є вона null, за значенням, яке повертає оператор.
Після зчитування файлу його також необхідно закрити за допомогою методу Close
, інакше це може призвести до витоку пам'яті або файл залишиться заблокованим і недоступним для інших процесів, поки програма працює.
Кінцевий код виглядатиме так:
index.cs
123456789var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Can you explain how the assignment inside the while loop works?
What happens if I forget to close the StreamReader?
Can you show how to handle errors when reading a file?
Awesome!
Completion rate improved to 2.04
Читання Файлів За Допомогою StreamReader
Свайпніть щоб показати меню
Ви можете відкривати та читати файли за допомогою мови програмування C#.
Для читання файлу створюється новий об'єкт StreamReader
. Об'єкт StreamReader
приймає шлях до файлу.
Термін "об'єкт" стане зрозумілішим у наступних розділах, однак для розуміння — об'єкт це просто екземпляр певного типу даних, а StreamReader
є типом даних так само, як і int
чи float
. Тому значення 1
, 2.5f
та "Hello World"
технічно можна назвати "об'єктами" типів даних int, float та string відповідно.
index.cs
1StreamReader fileVarName = new StreamReader(fullPath);
Тут fileVarName
позначає ім'я змінної, у якій буде збережено об'єкт StreamReader, а fullPath
— це повний шлях до файлу у вигляді рядка.
Наприклад, можна відкрити файл "text.txt" на Робочому столі, який має шлях C:/Users/Admin/Desktop/text.txt
:
index.cs
1StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Також можна використати неявне оголошення, щоб зробити синтаксис трохи коротшим: var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Розгляньте файл text.txt
, який містить наступний вміст:
text.txt
12345This is some example text
Об'єкт StreamReader
має метод ReadLine
, який зчитує один рядок з файлу та повертає його:
index.cs
1234var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);
Вивід:
This
Метод ReadLine
автоматично переміщує курсор на наступний рядок, тому при повторному виклику він зчитує наступний рядок, якщо такий існує, інакше повертає null
(нічого):
index.cs
12345678var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); Console.WriteLine(textFile.ReadLine()); // This Console.WriteLine(textFile.ReadLine()); // is Console.WriteLine(textFile.ReadLine()); // some Console.WriteLine(textFile.ReadLine()); // example Console.WriteLine(textFile.ReadLine()); // text Console.WriteLine(textFile.ReadLine()); // NULL
Вивід:
This
is
some
example
text
Для зчитування всіх рядків з файлу можна використати цикл while
з умовою, яка перевіряє, чи наступний рядок не є null
. Нижче наведено простий спосіб, як це зробити:
index.cs
12345678var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); while(line != null) { Console.WriteLine(line); line = textFile.ReadLine(); }
Вивід:
This
is
some
example
text
Ви можете зробити наведений вище код трохи акуратнішим, використовуючи певний прийом. Для цього розглянемо оператори присвоєння. Оператор присвоєння також має значення, яке повертається, і це значення, яке присвоюється. Це можна зрозуміти на прикладі:
index.cs
12int a; Console.WriteLine(a = 7);
Вивід:
7
Виводиться 7
, оскільки вираз a = 7
повертає 7
, тобто значення, яке присвоюється змінній a
.
Цю властивість можна використати для цікавих рішень, наприклад, присвоїти одне й те саме значення кільком змінним в одному виразі:
index.cs
123456789int a = 1; int b = 1; int c = 1; a = b = c = 9; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);
Вивід:
9
9
9
Використовуючи цю інформацію, можна змінити код для читання файлів, зробивши його коротшим шляхом видалення зайвих рядків коду:
index.cs
1234567var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while((line = textFile.ReadLine()) != null) { Console.WriteLine(line); }
Усередині умови спочатку використовується оператор присвоєння line = textFile.ReadLine()
, який автоматично оновлює змінну line
, а потім перевіряє, чи є вона null, за значенням, яке повертає оператор.
Після зчитування файлу його також необхідно закрити за допомогою методу Close
, інакше це може призвести до витоку пам'яті або файл залишиться заблокованим і недоступним для інших процесів, поки програма працює.
Кінцевий код виглядатиме так:
index.cs
123456789var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
Дякуємо за ваш відгук!