.NET 3.x Переопределить операции >> и << записи и чтения в/из файл/а - C#
Формулировка задачи:
Класс должен предоставлять возможность работы с файловыми потоками, в том числе, необходимо переопределить операции >> и << записи и чтения в/из файл/а. Объем записки - 20-25 стр. 14, полуторный интервал без листинг. Листинг - в приложении к КР.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace fileclass { public class fileclass { private string fname; public fileclass(string fn) { fname = fn; } public fileclass() { Console.Write("Введите имя файла (вместе с расширением): "); fname = Console.ReadLine(); } ~fileclass() { // магия деструктора } public string FName() { return fname; } public void Create() { FileStream file = new FileStream(fname, FileMode.Create); Console.WriteLine("Создан файл с именем \"" + fname + "\"."); file.Close(); } public void AddData() { FileStream file = new FileStream(fname, FileMode.Append); StreamWriter filestr = new StreamWriter(file); Console.Write("Введите данные: "); string tmp = Console.ReadLine(); filestr.WriteLine(tmp); Console.WriteLine("Готово! Данные добавлены в конец файла."); filestr.Close(); file.Close(); } public void AddData(string n) { FileStream file = new FileStream(fname, FileMode.Append); StreamWriter filestr = new StreamWriter(file); Console.Write("Ввод данных."); filestr.WriteLine(n); Console.WriteLine("Готово! Данные добавлены в конец файла."); filestr.Close(); file.Close(); } public void ReadData() { Console.WriteLine("Функции чтения не передан ни один параметр."); Console.WriteLine("Файл будет показан полностью."); FileStream file = new FileStream(fname, FileMode.Open, FileAccess.Read); // передаем символьному потоку ввода // в качестве аргумента байтовый поток StreamReader filestr_in = new StreamReader(file); string line; while (!filestr_in.EndOfStream) { // выводим строки, пока не достигнем конца файла // filestr_in.EndOfStream возвращает true, если // достигнут конец файла line = filestr_in.ReadLine(); Console.WriteLine(line); } // закрываем потоки filestr_in.Close(); file.Close(); } public void ReadData(int n) { FileStream file = new FileStream(fname, FileMode.Open, FileAccess.Read); // передаем символьному потоку ввода // в качестве аргумента байтовый поток StreamReader filestr_in = new StreamReader(file); string line; int count = 0; while (!filestr_in.EndOfStream) { // выводим строки, пока не достигнем конца файла // filestr_in.EndOfStream возвращает true, если // достигнут конец файла line = filestr_in.ReadLine(); count++; } file.Seek(0, SeekOrigin.Begin); Console.WriteLine("В файле " + count + " строк."); if (n > count) { Console.WriteLine("Запрос превышает количество строк в файле."); return; } Console.WriteLine("Будет показано " + n + " строк файла."); for (int i = 0; i < n; i++) { // выводим строки, пока не достигнем конца файла // filestr_in.EndOfStream возвращает true, если // достигнут конец файла line = filestr_in.ReadLine(); Console.WriteLine(line); } // закрываем потоки filestr_in.Close(); file.Close(); } public void CopyFrom(string _fname) { Console.WriteLine("Копирование из " + _fname + " в " + fname + "."); FileStream file = new FileStream(fname, FileMode.Append, FileAccess.Write); StreamWriter filestr = new StreamWriter(file); FileStream _file = new FileStream(_fname, FileMode.Open, FileAccess.ReadWrite); StreamReader _filestr = new StreamReader(_file); string line; while (!_filestr.EndOfStream) { // выводим строки, пока не достигнем конца файла // filestr_in.EndOfStream возвращает true, если // достигнут конец файла line = _filestr.ReadLine(); filestr.WriteLine(line); } Console.WriteLine("Готово."); _filestr.Close(); filestr.Close(); _file.Close(); file.Close(); } public void CopyIn(string _fname) { Console.WriteLine("Копирование из " + fname + " в " + _fname + "."); FileStream file = new FileStream(fname, FileMode.Open, FileAccess.ReadWrite); StreamReader filestr = new StreamReader(file); FileStream _file = new FileStream(_fname, FileMode.Append, FileAccess.Write); StreamWriter _filestr = new StreamWriter(_file); string line; while (!filestr.EndOfStream) { // выводим строки, пока не достигнем конца файла // filestr_in.EndOfStream возвращает true, если // достигнут конец файла line = filestr.ReadLine(); _filestr.WriteLine(line); } Console.WriteLine("Готово."); _filestr.Close(); filestr.Close(); _file.Close(); file.Close(); } public static void operator >>(fileclass fc1, fileclass fc2) // перегрузка оператора ">>" { fc1.CopyIn(fc2.FName()); } public static void operator <<(fileclass fc1, fileclass fc2) // перегрузка оператора "<<" { fc1.CopyFrom(fc2.FName()); } } }
Решение задачи: «.NET 3.x Переопределить операции >> и << записи и чтения в/из файл/а»
textual
Листинг программы
fc1 >> "test.txt"; //В качестве оператора могут использоваться только выражения присваивания, вызова, инкремента, декремента и создания нового объекта
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д