- •1.2 Понятия приложения, проекта, решения
- •1.3 Среда разработки Visual Studio .Net
- •1.4 Создание первого проекта
- •1. 5 Компиляция и выполнение программы в среде clr
- •2.1 Основы технологии ооп
- •2.2 Состав языка
- •2.3 Типы данных
- •2.4 Переменные и константы
- •2.5 Организация ввода-вывода данных. Форматирование
- •3.1 Некоторые операции с#
- •Отрицание:
- •Условная операция.
- •3.2 Выражения и преобразование типов
- •3.3 Перечень операций
- •3.4 Математические функции языка с#
- •4.1 Операторы следования
- •4.2 Операторы ветвления
- •4.3 Операторы цикла
- •4.4 Операторы безусловного перехода
- •5.1 Методы: основные понятия
- •5.2 Перегрузка методов
- •6.1 Прямая рекурсия
- •6.2 Косвенная рекурсия
- •7.1 Оператор try
- •7.2 Операторы checked и unchecked
- •7.3 Генерация собственных исключений
- •7.4 Приемы использования обработчиков исключений
- •8.1 Одномерные массивы
- •8.2 Массив как параметр
- •8.3 Массив как объект
- •8.4 Многомерные массивы
- •8.5 Ступенчатые массивы
- •8.6 Оператор foreach и его использование при работе с массивами
- •Примеры
- •9.1 Символы char
- •9.2 Неизменяемые строки string
- •9.3 Изменяемые строки
- •Вариант 1
- •Вариант 2
- •Редактирование текста;
- •10.1 Метасимволы в регулярных выражениях
- •10.2 Поиск в тексте по шаблону
- •10.3 Редактирование текста
- •11.1 Байтовый поток
- •11.2 Символьный поток
- •11.3 Двоичные потоки
- •11.4 Перенаправление стандартных потоков
- •Практикум
- •12.1.Работа с файловой системой: классы Directory и Filе и классы DirectoryInfo и FileInfo
- •12.2 Класс FileSystemInfo
- •12.3 Класс DirectoryInfo
- •12.4 Класс Directory
- •2. Реализуем метод, позволяющий получить по имени узла полное имя соответствующей папки
- •12.2 Работа с файлами
- •12.5 Класс File
- •13.1. Классы: основные понятия, данные, методы, конструкторы, свойства
- •13.2 Данные: поля и константы
- •13.3 Методы
- •Конструкторы экземпляра
- •13.4 Конструкторы класса
- •13.5 Свойства
- •13.6 Один класс - один файл
- •13.7. Классы: деструкторы, индексаторы Деструкторы
- •Индексаторы
- •13.8 Операции класса
- •14.1 Иерархия и наследование
- •Использование защищенного доступа
- •14.2 Наследование конструкторов
- •Позволяет вызвать конструктор базового класса:
- •Позволяет получить доступ к члену базового класса, который скрыт "за" членом производного класса.
- •14.3 Многоуровневая иерархия
- •14.4 Переменные базового класса и производного класса
- •14.5 Виртуальные методы
- •14.6 Абстрактные методы и классы
- •14.7 Запрет наследования
- •Самостоятельная работа
- •15.1. Пользовательские и стандартные интерфейсы
- •15.2 Стандартные интерфейсы .Net
- •15.3 Структуры
- •Задание
- •16.1. Классификация коллекций.
- •16.2 Коллекции общего назначения
- •16.3 Класс Stack
- •16.4 Класс Queue
- •16.5 Класс ArrayList
- •16.6 Класс Hashtable
- •17.1 Струткура простейшего windows-приложения
- •17.2 Элементы управления на форме
- •17.3 Обработка событий
- •17.4 Работа с элементами управления
- •17.5 Кнопки
- •17.6 Работа с элементами управления в режиме работы приложения
- •17.7 Работа со списками: ListBox, ComboBox, NumericUpDown.
- •17.8 Работа с переключателями: RadioButton, CheckBox
- •18.1 Рисование в форме
- •18.2 Работа с изображениями
12.2 Работа с файлами
Класс Filelnfo
Класс Filelnfo предназначен для организации доступа к физическому файлу, который содержится на жестком диске компьютера. Он позволяет получать информацию об этом файле (например, о времени его создания, размере, атрибутах и т. п.), а также производить различные операции, например, по созданию файла или его удалению. Класс FileInfo наследует члены класса FileSystemInfo и содержит дополнительный набор членов, который приведен в следующей таблице:
Член |
Описание |
AppendText() |
Создает объект StreamWriter для добавления текста к файлу |
CopyTo() |
Копирует уже существующий файл в новый файл |
Create() |
Создает новый файл и возвращает объект FileStream для взаимодействия с этим файлом |
CreateText() |
Создает объект StreamWriter для записи текстовых данных в новый файл |
Delete() |
Удаляет файл, которому соответствует объект FileInfo |
Directory |
Возвращает каталог, в котором расположен данный файл |
DirectoryName |
Возвращает полный путь к данному файлу в файловой системе |
Length |
Возвращает размер файла |
MoveTo() |
Перемещает файл в указанное пользователем место (этот метод позволяет одновременно переименовать данный файл) |
Name |
Позволяет получить имя файла |
Ореn() |
Открывает файл с указанными пользователем правами доступа на чтение, запись или совместное использование с другими пользователями |
OpenRead() |
Создает объект FileStream, доступный только для чтения |
OpenText() |
Создает объект StreamReader (о нем также будет рассказано ниже), который позволяет считывать информацию из существующего текстового файла |
OpenWrite() |
Создает объект FileStream, доступный для чтения и записи |
Как мы видим, большинство методов FileInfo возвращает объекты (FIleStream, StreamWriter, StreamReader и т. п.), которые позволяют различным образом взаимодействовать с файлом, например, производить чтение или запись в него. Приемы работы с данными потоками нам уже известны. Поэтому рассмотрим другие возможности класса FileInfo.
using System;
using System.Text;
using System.IO; //для работы с файловым вводом-выводом
using System.Text.RegularExpressions;
namespace MyProgram
{
class Program
{
static void Main()
{
//создаем новый файл и связываем с ним строковый поток
FileInfo f = new FileInfo("text.txt");
StreamWriter fOut = new StreamWriter(f.Create());
//записываем в файл данные и закрываем строковый поток,
// при этом связь с физическим файлом для f не рвется
fOut.WriteLine("ОДИН ДВА ТРИ...");
fOut.Close();
//получаем информацию о файле
Console.WriteLine("*******"+f.Name File Inf+"**************");
Console.WriteLine("File size: {0}", f.Length);
Console.WriteLine("Creation: {0}", f.CreationTime);
Console.WriteLine("Attributes: {0}", f.Attributes.ToString());
}
}
}
Замечание. Еще раз удалите с диска d измененную папку prim, затем скопирует ее исходную версию из раздела 12 данного электронного учебника.
Рассмотрим следующий пример:
static void Main()
{
FileInfo f = new FileInfo(@"d:\prim\letter\letter1.txt");
f.CopyTo(@"d:\prim\bmp\letter.txt");
Directory.CreateDirectory(@"d:\prim\archives");
f.MoveTo(@"d:\prim\archives\letter1.txt");
f = new FileInfo(@"d:\prim\letter\letter2.txt");
f.Delete();
}
Задание. Посмотрите, что произойдет, если запустить эту программу еще раз. Дайте этому объяснение.
Рассмотрим еще один пример по удалению файлов:
static void printFile( FileInfo file)
{
Console.WriteLine("***** "+file.Name+" *****");
Console.WriteLine("File size: {0}", file.Length);
Console.WriteLine("Creation: {0}", file.CreationTime);
Console.WriteLine("Attributes: {0}", file.Attributes.ToString());
}
static void Main(string[] args)
{
DirectoryInfo dir = new DirectoryInfo(@"d:\prim\bmp");
FileInfo[] files = dir.GetFiles();
if (files.Length!=0)
{
Console.WriteLine("Найдено {0} файла", files.Length);
foreach (FileInfo f in files)
{
printFile(f);
f.Delete();
}
Console.WriteLine("\nТеперь в каталоге содержится {0} файлов и можно его удалить",
dir.GetFiles().Length);
dir.Delete();
}
}