Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРАКТИЧ. РАБОТЫ.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
1.49 Mб
Скачать

Практическая работа № 5

Тема: «Классы работы с файлами».

Цель: научиться работать с классами работы с файлами при объектно-ориентированном подходе при использовании языка C#.

Ход работы:

Используя методические пособия, рассмотрите тему: «Классы работы с файлами». Рассмотрите примеры выполнения практической работы и выполните задания, соответствующие Вашему варианту.

Теоретическая справка:

Классы работы с файлами

Пространство имен System.IO содержит классы, позволяющие осуществлять чтение и запись в файлы и потоки данных.

StreamReader – класс, реализующий TextReader, который считывает символы из потока. Некоторые его методы:

StreamReader(String) – конструктор, инициализирующий новый экземпляр класса StreamReader для указанного имени файла.

ReadToEnd – считывает поток от текущего положения до конца.

ReadLine – выполняет чтение строки символов из текущего потока и возвращает данные в виде строки.

В следующем примере экземпляр StreamReader используется для чтения текста из файла:

public static void Main()

{

StreamReader sr=new StreamReader("TestFile.txt");

string line;

line = sr.ReadToEnd();

Console.WriteLine(line);

}

StreamWriter – класс, реализующий TextWriter для записи символов в поток. Рассмотрим некоторые его методы:

StreamWriter(String) – конструктор, инициализирующий новый экземпляр класса StreamWriter для указанного файла по заданному пути. Если файл существует, он может быть либо перезаписан, либо в него могут быть добавлены данные. Если файл не существует, конструктор создает новый файл.

Write(String) – записывает строку в текстовый поток.

В следующем примере показано, как с помощью объекта StreamWriter выполнить запись файла, в котором перечисляются каталоги на диске C, а затем с помощью объекта StreamReader считать и отобразить имя каждого каталога.

Основные операции над файлами

Создание файла.

Для этого воспользуемся классом FileInfo из пространства имен System.IO. В конструктор передаем имя будущего файла. Создание файла производится вызовом метода Create().

FileInfo fi = new FileInfo("new.txt"); fi.Create();

Удаление файла.

Для удаления файла используем метод Delete().

FileInfo fi = new FileInfo("new.txt"); fi.Delete();

Запись в файл и чтение из файла.

Для записи и чтения используются символьные потоки позволяющие оперировать непосредственно с символами Unicode.

StreamWriter sw = new StreamWriter("name.txt");

sw.WriteLine("Привет!");

sw.Close();

После всех действий над файлом не забудь закрывать его, используя метод Close(), в противном случае изменения в файле не будут сохранены!

Дозапись в файл.

Если надо дописать данные в конец файла используя метод AppendText().

StreamWriter sw;

FileInfo fi = new FileInfo("name.txt"); sw = fi.AppendText();

sw.WriteLine("blablabla");

sw.Close();

Чтение из файла.

Для того чтобы файл был корректно считан, без всяких непонятных символов, он должен быть сохранен в Unicode.

StreamReader streamReader = new StreamReader("name.txt");

string str = " ";

while (!streamReader.EndOfStream)

str += streamReader.ReadLine();

Работы с потоками.

Для корректной работы с потоками ввода/вывода рекомендуется использовать конструкцию using:

using(StreamWriter streamWriter = new StreamWriter("name.txt")) { // ...}

По выходу из блока using, поток, с которым вы работали, автоматически закроется.

Пример выполнения практической работы:

Задание 1.

Программным путем:

  • В папке С:\temp создайте папки К1 и К2.

  • В папке К1 создайте файл t1.txt, в который запишите следующий текст:

Иванов Иван Иванович, 1978 года рождения, место жительства г. Одесса

  • Создайте файл t2.txt, в который перепишите вначале текст из файла t1.txt, а затем запишите следующий текст:

Иванова Ивана Ивановна, 1987 года рождения, место жительства г. Одесса

  • Выведите развернутую информацию о файле t2.txt.

  • Файл t2.txt перенесите в папку K2.

  • Файл t1.txt скопируйте в папку K2.

  • Папку K2 переименуйте в ALL, а папку K1 удалите.

  • Вывести полную информацию о файлах папки ALL.

DirectoryInfo dir = new DirectoryInfo(@"C:\\TEMP\" + "K1"); dir.Create();

DirectoryInfo dir2 = new DirectoryInfo(@"C:\\TEMP\" + "K2"); dir2.Create();

StreamWriter sFile;

FileInfo myFile = new FileInfo(@"C:\\TEMP\K1\t1.txt");

sFile = myFile.AppendText();

sFile.WriteLine("Иванов Иван Иванович, 1978 года рождения, место жительства г. Одесса");

sFile.Close();

StreamReader streamReader = new StreamReader(@"C:\\TEMP\K1\t1.txt");

string str = "", str_temp = "";

while ((str_temp = streamReader.ReadLine()) != null)

{ str += str_temp; }

streamReader.Close();

string str2 = " Иванова Ивана Ивановна, 1987 года рождения, место жительства г. Одесса";

FileInfo myFile2 = new FileInfo(@"C:\\TEMP\K2\t2.txt");

sFile = myFile2.AppendText();

sFile.WriteLine(str + str2);

sFile.Close();

Console.WriteLine("Имя {0} , Время создания {1} , Путь к каталогу {2} , Полное путь {3}",myFile2.Name,myFile2.CreationTime,myFile2.Directory,myFile2.FullName);

File.Move(@"C:\\TEMP\K1\t2.txt", @"C:\\TEMP\K2\t2.txt");

File.Copy(@"C:\\TEMP\K1\t1.txt", @"C:\\TEMP\K2\t1.txt");

Directory.Move(@"C:\\TEMP\K2", @"C:\\TEMP\ALL");

File.Delete(@"C:\\TEMP\K1\t1.txt");

Directory.Delete(@"C:\\TEMP\K1");

Console.ReadKey();

Варианты заданий:

Задание 1.

Программным путем:

  • В папке С:\temp создайте папки К1 и К2.

  • В папке К1 создайте файл t1.txt, в который запишите следующий текст:

Иванов Иван Иванович, 1965 года рождения, место жительства г. Саратов

  • В папке К1создайте файл t2.txt, в который запишите следующий текст:

Петров Сергей Федорович, 1966 года рождения, место жительства г.Энгельс

  • В папке К2 создайте файл t3.txt, в который перепишите вначале текст из файла t1.txt, а затем из t2.txt

  • Выведите развернутую информацию о созданных файлах.

  • Файл t2.txt перенесите в папку K2.

  • Файл t1.txt скопируйте в папку K2.

  • Папку K2 переименуйте в ALL, а папку K1 удалите.

  • Вывести полную информацию о файлах папки ALL.

Задание 2.

1.

  1. Дан текстовый файл. Вывести строку, содержащую максимальное количество букв ‘a’ .

  2. Подсчитать в текстовом файле количество строк.

2.

  1. Подсчитать в текстовом файле количество слов.

  2. Вывести из текстового файла все слова, начинающиеся с ‘pro’ .

3.

  1. Дан файл f , состоящий из действительных чисел. Найти сумму наибольшего и наименьшего из его компонент.

  2. Дан файл f, состоящий из действительных чисел. Написать функцию, подсчитывающую сумму его положительных компонент.

4.

  1. Дан целочисленный файл f. Записать в файл g все четные числа файла f, а в файл h - все нечетные, сохраняя порядок.

  2. Создать новый файл из исходного, заменив все группы пробелов одним.

5.

  1. Создать новый файл, состоящий только из четных строк исходного файла.

  2. Дан целочисленный файл f. Найти максимум и минимум и поменять их местами.

6.

  1. Дан файл f, состоящий из действительных чисел. Первый и последний элементы поменять местами.

  2. Дан текстовый файл f, вывести его содержимое на экран.

7.

  1. Дан целочисленный файл f. Все отрицательные элементы заменить нулями.

  2. Дан символьный файл. Заменить все символы ‘;’ на ‘.’.

8.

  1. Дан целочисленный файл. Первый и центральный элементы поменять местами.

  2. Вывести на экран самую длинную строку текстового файла.

9.

  1. Дан целочисленный файл f. Определить, есть ли в нем нулевые элементы.

  2. Вывести из текстового файла все слова палиндромы.

10.

  1. Дан файл f, состоящий из действительных чисел. Написать функцию, подсчитывающую сумму его положительных компонент.

  2. Определить, сколько в целочисленном файле простых чисел.