Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Лістинг 19.3. Робота з текстовим файлом






using System;

using System.Collections.Generic;

using System.Text;

using System.IO;

namespace StringFileDemo

{

class Program

{

static void Main(string[] ergs)

{

// Запис i текстовий файл:

FileStream Stream = new FileStream(" strings.dat", FileMode.Create, FileAccess.Write);

StreamWriter Writer = new StreamWriter(Stream);

Writer.WriteLine(" Мело, мело по всій Землі");

Writer.WriteLine(" У всі межі.");

Writer.WriteLine(" Свічка горіла на столі.");

Writer.WriteLine(" Свічка горіла...");

Writer.Close();

Stream.Close();

// Читання з файлу:

Stream = new FileStream(" strings.dat", FileMode.Open, FileAccess.Read);

StreamReader Reader = new StreamReader(Stream);

string S; do

{

S = Reader.ReadLine();

if (S! = null)

Console.WriteLine(S);

}

while (S! = null);

Reader.Close();

Stream.Close();

Console.ReadLine();

}

}

}

При створенні об'єкту FileStream йому передаються ім'я файлу і два параметри: FileMode, що визначає спосіб створення потоку, і FileAccess, регулюючий доступ потоку до даним.

У табл. 19.5 і 19.6 указуються допустимі значення цих параметрів.

Для потоку існує поняття поточного запису — в цей запис поміщаються дані і з неї вони прочитуються.

Положенням поточного запису можна управляти за допомогою методу Seek (), що має таку сигнатуру:

public virtual long Seek(int Offset, SeekOrigin Origin);

Тут Offset — зсув щодо позиції, вказаної параметром Origin. Перерахування SeekOrigin може мати значення, вказане в табл. 18.7.

Таблиця 19.5. Значення параметра FileMode

Значення Опис
Append Додає записи в існуючий файл або створює новий. Вимагає, щоб параметр FileMode мав значення Write
Create Створює новий файл або переписує той, що існує. Вимагає щоб параметр FileMode мав значення Write
CreateNew Створює новий файл, а якщо він вже існує, виникає виключення. Вимагає, щоб параметр FileMode мав значення Write
Open Відкриває існуючий файл. Якщо файлу немає, виникає виключення
OpenOrCreate Відкриває той, що існує або створює новий файл, якщо він ще не створений
Truncate Відкриває існуючий файл і робить його розмір рівним нулю

Таблиця 19.6.Значення параметра FileAccess

Значення Опис
Read Потік може читати дані
ReadWrite Потік може читати і записувати дані
Write Потік може записувати дані

Таблиця 19.7. Значення перерахування SeekOrigin

Значення Опис
Begin Відповідає початку потоку
Current Відповідає поточному запису потоку
End Відповідає кінцю потоку

Таким чином, вказаний далі виклик зробить поточним запис з індексом 10 від початку потоку (індексація починається з 0):

 

Stream.Seek(10, SeekOrigin.Begin);

 

Фізичний запис даних у файл реалізується у момент закриття потоку методом Close () або виштовхування записів з проміжного буфера методом Flush (). У другому випадку потік не закривається і готовий до продовження операцій.

При читанні рядків з текстового файлу потрібно контролювати кінець файлу. Для цього змінна типу string в С# може приймати значення null, якщо з файлe нічого не прочитано, тобто якщо файл вичерпаний (див. показаний раніше приклад). Іншим способом контролю є звернення до методу StreamReader.Peek(), який повертає позитивне число, якщо файл не вичерпаний, або -1 інакше. Таким чином, цикл читання записів з текстового файлу спрощується:

while (Reader.Peek() > 0) Console.WriteLine(Reader.ReadLine());






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.