Файлы http: //ci-sharp. ru/
Для того, чтобы работать с файлами, необходимо: Подключить пространство имен: using System. IO; Использовать класс: File. Си Шарп предоставляет огромные возможности для работы с файлами: чтение, запись, перезапись текста и так далее.
Чтение файла File. Read. All. Lines - считывает с текстового файла все строки и закрывает файл. File. Read. All. Bytes - считывает двоичный файл и записывает результат в массив байтов и закрывает файл. File. Read. All. Text - считывает текстовый файл с заданной кодировкой. File. Read. Lines - считывает строки с заданной кодировкой.
Примеры считывания с файла: byte[] f 2 = File. Read. All. Bytes("youtext. txt"); // Метод считывания с файла Encoding code = Encoding. ASCII; string f 3 = File. Read. All. Text("youtext. txt", code); // Метод считывания с файла IEnumerable<string> s = File. Read. Lines("youtext. txt", code); // Метод считывания с файла
Копирование файла: Если нужно скопировать текстовый файл, то для этого нужно использовать метод: Copy. File. Copy - копирует из существующего файла в другой файл. Возможно копировать самого в себя. Примеры: File. Copy("with. txt", "where. txt", true); // копирование с возможностью перезаписи. File. Copy("with. txt", "where. txt", false); // копирование без перезаписи.
Запись в файл: За запись в файл отвечает класс: Stream. Writer print = new Stream. Writer("out. txt", false); // перезапись в файл Stream. Writer print 2 = new Stream. Writer("out. txt", true); // запись в файл с добавлением Разница только в false и true. Если true значит можно записывать ТОЛЬКО с добавлением, а если false - значит можно перезаписывать.
После того, как объявили массив, можно через методы: Write. Line и Write записывать в файл. Write. Line - это запись с переводом на новую строку, а Write - это запись без перевода строки. Close - это метод, который закрывает файл.
Пример: Stream. Writer print = new Stream. Writer("out. txt", false); // перезапись в файл print. Write("Hi! How are You? "); print. Close();
Задание 1: Написать программу, которая записывает массив чисел в файл, копирует его и считает скопированный файл на экран монитора.
1. Подключаем System. IO;
2. Генерируем массив int n = 10; int[, ] mas = new int[n, n]; Random r = new Random(); for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) mas[i, j] = r. Next(100);
3. Вывод массива в консоле на экран Console. Write. Line("massiv: "); for (int i = 0; i < n; i++) { Console. Write. Line(); for (int j = 0; j < n; j++) { Console. Write(mas[i, j] + " "); } }
4. перезапись в файл Console. Write. Line(); Stream. Writer print = new Stream. Writer("in. txt", false); print. Write("Print massiv: "); for (int i = 0; i < n; i++) { print. Write. Line(); for (int j = 0; j < n; j++) print. Write(mas[i, j] + " "); } print. Close();
5. Копирования файла File. Copy("in. txt", "in-copy. txt", false); // копирование с возможностью перезаписи. string read = File. Read. All. Text("in-copy. txt"); // Метод считывания с файла Console. Write. Line( «Вывод массива из файла: "); Console. Write. Line(read); // вывод того, что было скопировано в файл Console. Read. Key(); }
Результат работы программы:
Итоговые файлы
Задание 2. Использование метода Read. All. Text для отображения содержимого файла. В случае отсутствия файла выполняется его создание, и в этот файл добавляется текст.
string path = @"c: tempMy. Test. txt"; if (!File. Exists(path)) { string create. Text = "Привет" + Environment. New. Line; File. Write. All. Text(path, create. Text, Encoding. UTF 8); } string append. Text = "Добавляем" + Environment. New. Line; File. Append. All. Text(path, append. Text, Encoding. UTF 8); string read. Text = File. Read. All. Text(path); Console. Write. Line(read. Text);
http: //msdn. microsoft. com/ruru/library/ms 143369. aspx
Первый пример показывает синхронную операцию чтения в консольном приложении. { { try { using (Stream. Reader sr = new Stream. Reader("Test. File. txt")) { String line = sr. Read. To. End(); Console. Write. Line(line); } } catch (Exception e) { Console. Write. Line(" файл не может прочтён: "); Console. Write. Line(e. Message); } } }
Ниже перечислены некоторые часто используемые классы для файлов и каталогов: File предоставляет статические методы для создания, копирования, удаления, перемещения и открытия файлов, а также помогает создать объект File. Stream. File. Info предоставляет методы экземпляра для создания, копирования, удаления, перемещения и открытия файлов, а также помогает создать объект File. Stream. Directory предоставляет статические методы операций создания, перемещения и перечисления в директориях и поддиректориях. Directory. Info предоставляет методы экземпляра операций создания, перемещения и перечисления в директориях и поддиректориях. Path предоставляет методы и свойства для обработки строк каталогов межплатформенным способом.
Path Путь примеры разрешенных путей в C# : c: \My. Dir\My. File. txt c: \My. Dir\My. Subdir \\My. Server\My. Share в C#.
Пример string source. Dir = @"C: current"; string archive. Dir= @"C: archive"; try { var txt. Files = Directory. Enumerate. Files(source. Dir, "*. txt"); foreach (string Tek. File in txt. Files) { string file. Name = Tek. File. Substring(source. Dir. Length + 1); Directory. Move(Tek. File, Path. Combine(archive. Dir, file. Name)); } } catch (Exception e) { Console. Write. Line(e. Message); }
Невозможно выполнить проверку допустимости результатов во всех скриптах, поскольку все эти операции выполняются для строк. Например, метод Get. Extension анализирует переданную в него строку и возвращает из этой строки расширение. Однако это не означает, что на диске существует файл с таким расширением.
Классы Класс Binary Reader и Writer Directory, File, Directory. Info и File. Info Применение Чтение и запись простых типов данных File. Stream Создание, удаление и перемещение файлов и директорий. Получение подробной информации о файлах, при помощи свойств, определенных в этих классах. Доступ к файлам потоковым способом Memory. Stream Доступ к данным храняшимся в памяти Stream. Writer и Stream. Reader String. Reader и String. Writer Чтение и запись текстовой информации из строкового буфера
File. Info Предоставляет свойства и методы экземпляра для создания, копирования, удаления, перемещения и открытия файлов, а также позволяет создавать объекты File. Stream. Этот класс не наследуется. File. Stream Предоставляет Stream в файле, поддерживая синхронные и асинхронные операции чтения и записи. Path Выполняет операции для экземпляров класса String, содержащих сведения пути к файлу или каталогу. Эти операции выполняются межплатформенным способом. Stream Предоставляет универсальное представление последовательности байтов. Stream. Reader Реализует Text. Reader, который считывает символы из потока байтов в определенной кодировке. Stream. Writer Реализует Text. Writer для записи символов в поток в определенной
РАБОТА С КЛАССАМИ DIRECTORYINFO И FILEINFO
Свойства Attributes Назначение Возвращает атрибуты файла в виде значений перечисления File. Attributes Creation. Time Возвращает время создания файла Exists Проверяет является ли файл директорией или нет Extension Возвращает расширение файла Last. Access. Ti Возвращает время последнего доступа к файлу me Full. Name Возвращает полный путь к файлу Last. Write. Tim Возвращает время последнего изменения файла e Name Возвращает имя данного файла Delete() Удаляет файл.
Класс Directory. Info содержит методы для создания, перемещение и удаление каталогов. Чтобы использовать вышеприведённые свойства, необходимо создать объект класса Directory. Info //Символ @ блокирует использование косой черты как маркера начала спецсимвола Directory. Info dir 1 = new Directory. Info(@"c: 1");
После этого уже можно просмотреть свойства директории при помощи объекта dir 1 Console. Write. Line("Ролное имя : {0}", dir 1. Full. Name); Console. Write. Line("Атрибуты: {0}", dir 1. Attributes. To. String());
значения перечисления File. Attributes Свойства Archive Compressed Directory Encrypted Hidden Offline Read. Only System Назначение Возвращает Архивный статус файла Позволяет узнать сжат файл или нет Показывает является ли файл директорией или нет Показывает закодирован файл или нет Показывает скрыт файл или нет Показывает, что данные отсутствуют Показывает является ли файл только для чтения Показывает, является ли файл системным (возможно файл в директории Windows
Работа с файлами в директории с расширением BMP в папке Получить список всех файлов Directory. Info dir 1 = new Directory. Info(@"c: 1"); File. Info[] bmpfiles = dir 1. Get. Files("*. bmp"); Console. Write. Line("Общее число bmp files {0}", bmpfiles. Length); foreach (File. Info f in bmpfiles) { Console. Write. Line("Имя : {0}", f. Name); Console. Write. Line("Размер : {0}", f. Length); Console. Write. Line("Время создания: {0}", f. Creation. Time); Console. Write. Line("Атрибуты: {0}", f. Attributes. To. String()); }
Создание подкаталогов Directory. Info dir 1 = new Directory. Info(@"c: 1"); dir 1. Create. Subdirectory("Sub"); dir 1. Create. Subdirectory(@"SubMy. Sub");
Создание файлов при помощи класса File. Info Класс File. Info позволяет создавать новые файлы, получать информацию, удалять и перемещать их. В этом классе также есть методы для открытия, чтения и записи в файл. В следующем примере показано, как можно создать текстовый файл и получить доступ к его информации (времени его создания, полное имя, и так далее):
Directory. Info dir 1 = new Directory. Info(@"c: 1"); File. Info fi = new File. Info(@"c: 122. txt"); File. Stream fstr = fi. Create(); Console. Write. Line("время создания: {0}", fi. Creation. Time); Console. Write. Line("Полное имя: {0}", fi. Full. Name); Console. Write. Line("атрибуты: {0}", fi. Attributes. To. String()); //Удаление файла fstr. Close(); fi. Delete();
метод File. Info есть метод под названием Open () с Open() В классе помощью которого можно создавать файлы, подставляя в параметры значения перечислений File. Mode и File. Access File. Info f = new File. Info("c: myfile. txt"); File. Stream s = f. Open(File. Mode. Open. Or. Create, File. Access. Read); После этого, используя объект 's', можно читать и записывать в файл
значения File. Mode Значение Append Применение Для открытия файла и добавления данных. Используется совместно со значением File. Access. Write. Create Для создания нового файла. Если файл уже существует, то он затирается. Create. New Для создания нового файла. Если файл существует, то возникает исключение IOException. Open Для открытия существующего файла Open. Or. Create Для открытия существующего или создания нового файла. Если файл не существует, то будет создан новый. Truncate Для урезания существующего файла
значения File. Access Значения Применение Read Для чтения (получения) данных из файла Read. Write Для записи в или чтения из файла Для записи данных в файл
Запись в текстовый файл при помощи класса Stream. Writer Текстовые данные или любую другую информацию можно записать в файл используя метод Create. Text() в классе File. Info. Однако предварительно необходимо получить валидный Stream. Writer. Именно Stream. Write обеспечивает необходимую функциональность для записи в файл.
File. Info f = new File. Info("Mytext. txt") Stream. Writer w = f. Create. Text(); w. Write. Line("This is from"); w. Write. Line("Chapter 6"); w. Write. Line("Of C# Module"); w. Write(w. New. Line); w. Write. Line("Thanks for your time"); w. Close();
Чтение из текстового файла Для чтения из текстового файла можно воспользоваться классом Stream. Reader. Для этого необходимо указать имя файла в статическом методе Open. Text() класса File.
Stream. Reader f = File. Open. Text(@"c: 1Mytext. txt"); string s= null; while ((s = f. Read. Line()) != null) { Console. Write. Line(s); } f. Close();