парадигмы-Примеры1.ppt
- Количество слайдов: 17
Примеры использования потоков
public static void Main(string[] args) { File. Stream fout; // Открываем выходной файл, fout = new File. Stream("test. txt", File. Mode. Create); // Записываем в файл алфавит, for (char с = 'A'; с <= 'Z'; с++) fout. Write. Byte((byte)с); fout. Close(); }
Использование класса Filestream для копирования файла public static void Main(string[] args) { int i ; File. Stream fin; File. Stream fout; // Открываем входной файл, fin = new File. Stream(args[0], File. Mode. Open); // Открываем выходной файл, fout = new File. Stream(args[1], File. Mode. Create); // Копируем файл, do { i = fin. Read. Byte(); if(i != -1) fout. Write. Byte((byte)i) ; } while(i != -1) ; fin. Close() ; fout. Close() ; }
Использование класса Stream. Writer public static void Main(string[] args) { string str; File. Stream fout; fout = new File. Stream("test. txt", File. Mode. Create); Stream. Writer fstr_out = new Stream. Writer(fout); Console. Write. Line("Введите текст ('стоп' для завершения). "); do { Console. Write(": " ) ; str = Console. Read. Line(); if(str != "стоп") { str = str + "rn"; // Добавляем символ новой строки, fstr_out. Write(str); }} while(str != "стоп"); fstr_out. Close() ; }
Использование класса Stream. Reader public static void Main(string[] args) { File. Stream fin; string s; fin = new File. Stream("test. txt", File. Mode. Open); Stream. Reader fstr_in = new Stream. Reader(fin); // Считываем файл построчно while ((s = fstr_in. Read. Line () ) != null) { Console. Write. Line(s); } fstr_in. Close () ; }
Демонстрация использования двоичного ввода-вывода public static void Main(string[] args) { Binary. Writer data. Out; Binary. Reader dataln; int i = 10; double d = 1023. 56; bool b = true; data. Out = new Binary. Writer(new File. Stream("testdata", File. Mode. Create));
• Console. Write. Line("Запись " + i); data. Out. Write(i); Console. Write. Line("Запись " + d); data. Out. Write(d); Console. Write. Line("Запись " + b); data. Out. Write(b); Console. Write. Line("Запись " + 12. 2 * 7. 4); data. Out. Write(12. 2 * 7. 4); data. Out. Close(); Console. Write. Line();
// Теперь попробуем прочитать эти данные, dataln = new Binary. Reader(new File. Stream("testdata", File. Mode. Open)); i = dataln. Read. Int 32(); Console. Write. Line("Считывание " + i); d = dataln. Read. Double(); Console. Write. Line("Считывание " + d); b = dataln. Read. Boolean(); Console. Write. Line("Считывание " + b); d = dataln. Read. Double(); Console. Write. Line("Считывание " + d); dataln. Close(); }
При выполнении этой программы были получены следующие результаты: Запись 1023. 56 Запись True Запись 90. 28 Считывание 1023. 56 Считывание True Считывание 90. 28
Использование классов String. Reader И String. Writer public static void Main(string[] args) { // Создаем объект класса String. Writer strwtr = new String. Writer(); // Записываем данные в String. Writer-объект. for (int i = 0; i < 10; i++) strwtr. Write. Line("Значение i равно: " + i); // Создаем объект класса String. Reader strrdr = new String. Reader(strwtr. To. String()); // Теперь считываем данные из String. Reader-объекта. string str = strrdr. Read. Line(); while (str != null) { str = strrdr. Read. Line(); Console. Write. Line(str); } }
Эта программа сначала создает объект класса String. Writer с именем strwtr и записывает в него данные с помощью метода Write. Line (). Затем создается объект класса String. Reader с использованием строки, содержащейся в объекте strwtr, и метода To. String(). Наконец, содержимое строки считывается с помощью метода Read. Line ().
Сериализация • Сохранение объектов называют сериализацией. • Восстановление сохраненных объектов – десериализация. • Класс необходимо пометить как сериализуемый атрибутом [Serializable] Поля, которые сохранять не требуется помечаются атрибутом [Non. Serializaed]
Пример [Serializable] Class demo{ … public int a=1; [Non. Serialized ] public double y; … }
Сохранение объектов в двоичном формате 1. Подключить к программе пространство имен System. Runtime. Serialization. Formatters. Binary 2. Пометить сохраняемый класс атрибутом [Serializable] 3. Создать поток и связать его с файлом на диске. 4. Создать объект класса Binary. Formatter 5. Сохранить объекты в потоке 6. Закрыть файл.
• Для сохранения объектов определены два метода: • Serialize(поток, объект); • Deserialize(поток);
Demo d = new Demo(); … File. Stream f = new File. Stream("Demo. bin", File. Mode. Create); Binary. Formatter bf = new Binary. Formatter(); bf. Serialize(f, d); f. Close();
File. Stream f = new File. Stream("Demo. bin", File. Mode. Open); Binary. Formatter bf = new Binary. Formatter(); Demo d = (Demo) bf. Deserialize(f); f. Close();
парадигмы-Примеры1.ppt