Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Читання Файлів За Допомогою StreamReader | Структури Даних та Робота з Файлами
C# Понад Базовий Рівень

bookЧитання Файлів За Допомогою StreamReader

Ви можете відкривати та читати файли за допомогою мови програмування C#.

Для читання файлу створюється новий об'єкт StreamReader. Об'єкт StreamReader приймає шлях до файлу.

Note
Примітка

Термін "об'єкт" стане зрозумілішим у наступних розділах, однак для розуміння — об'єкт це просто екземпляр певного типу даних, а StreamReader є типом даних так само, як і int чи float. Тому значення 1, 2.5f та "Hello World" технічно можна назвати "об'єктами" типів даних int, float та string відповідно.

index.cs

index.cs

copy
1
StreamReader fileVarName = new StreamReader(fullPath);

Тут fileVarName позначає ім'я змінної, у якій буде збережено об'єкт StreamReader, а fullPath — це повний шлях до файлу у вигляді рядка.

Наприклад, можна відкрити файл "text.txt" на Робочому столі, який має шлях C:/Users/Admin/Desktop/text.txt:

index.cs

index.cs

copy
1
StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Note
Примітка

Також можна використати неявне оголошення, щоб зробити синтаксис трохи коротшим: var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");

Розгляньте файл text.txt, який містить наступний вміст:

text.txt

text.txt

copy
12345
This is some example text

Об'єкт StreamReader має метод ReadLine, який зчитує один рядок з файлу та повертає його:

index.cs

index.cs

copy
1234
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);

Вивід:

This

Метод ReadLine автоматично переміщує курсор на наступний рядок, тому при повторному виклику він зчитує наступний рядок, якщо такий існує, інакше повертає null (нічого):

index.cs

index.cs

copy
12345678
var 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

index.cs

copy
12345678
var 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

index.cs

copy
12
int a; Console.WriteLine(a = 7);

Вивід:

7

Виводиться 7, оскільки вираз a = 7 повертає 7, тобто значення, яке присвоюється змінній a.

Цю властивість можна використати для цікавих рішень, наприклад, присвоїти одне й те саме значення кільком змінним в одному виразі:

index.cs

index.cs

copy
123456789
int 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

index.cs

copy
1234567
var 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

index.cs

copy
123456789
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
question-icon
=();

Натисніть або перетягніть елементи та заповніть пропуски

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 6

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Awesome!

Completion rate improved to 2.04

bookЧитання Файлів За Допомогою StreamReader

Свайпніть щоб показати меню

Ви можете відкривати та читати файли за допомогою мови програмування C#.

Для читання файлу створюється новий об'єкт StreamReader. Об'єкт StreamReader приймає шлях до файлу.

Note
Примітка

Термін "об'єкт" стане зрозумілішим у наступних розділах, однак для розуміння — об'єкт це просто екземпляр певного типу даних, а StreamReader є типом даних так само, як і int чи float. Тому значення 1, 2.5f та "Hello World" технічно можна назвати "об'єктами" типів даних int, float та string відповідно.

index.cs

index.cs

copy
1
StreamReader fileVarName = new StreamReader(fullPath);

Тут fileVarName позначає ім'я змінної, у якій буде збережено об'єкт StreamReader, а fullPath — це повний шлях до файлу у вигляді рядка.

Наприклад, можна відкрити файл "text.txt" на Робочому столі, який має шлях C:/Users/Admin/Desktop/text.txt:

index.cs

index.cs

copy
1
StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Note
Примітка

Також можна використати неявне оголошення, щоб зробити синтаксис трохи коротшим: var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");

Розгляньте файл text.txt, який містить наступний вміст:

text.txt

text.txt

copy
12345
This is some example text

Об'єкт StreamReader має метод ReadLine, який зчитує один рядок з файлу та повертає його:

index.cs

index.cs

copy
1234
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);

Вивід:

This

Метод ReadLine автоматично переміщує курсор на наступний рядок, тому при повторному виклику він зчитує наступний рядок, якщо такий існує, інакше повертає null (нічого):

index.cs

index.cs

copy
12345678
var 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

index.cs

copy
12345678
var 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

index.cs

copy
12
int a; Console.WriteLine(a = 7);

Вивід:

7

Виводиться 7, оскільки вираз a = 7 повертає 7, тобто значення, яке присвоюється змінній a.

Цю властивість можна використати для цікавих рішень, наприклад, присвоїти одне й те саме значення кільком змінним в одному виразі:

index.cs

index.cs

copy
123456789
int 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

index.cs

copy
1234567
var 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

index.cs

copy
123456789
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
question-icon
=();

Натисніть або перетягніть елементи та заповніть пропуски

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 6
some-alt