Programming 08 - Input-Output.pptx
- Количество слайдов: 27
Работа с файлами в. NET 1) 2) 3) 4) 5) Потоки Текстовые файлы Бинарные файлы Операции с файлами Работа с файловой системой 1
Потоки (Streams) Пространство имен: using System. IO; 2
Потоки (Streams) 3
Файлы Файл - именованная область внешней памяти ПК либо логическое устройство (источник или приемник информации). Файл - последовательность байт (мы можем трактовать ее по-разному). Классификация файлов компонент. NET (аналог в языке Pascal): ________________________________ - текстовые файлы - типизированные файлы - нетипизированные файлы Text. Reader, Text. Writer Binary. Reader, Binary. Writer File. Stream 4
Некоторые особенности файлов При описании файловой переменной неявно описывается скрытая переменная, которая хранит текущий указатель файла (адрес текущего элемента файла). Если операции выполняются над файлом покомпонентно, то в действии участвует тот компонент, который обозначен текущим указателем; При открытии файла ОС устанавливает каждому открываемому файлу обработчик с определенным номером, называемый дескриптором файла. Этот обработчик осуществляет операции обмена данными через буфер ввода-вывода. 5
Доступ к компонентам файла может быть как последовательным, так и прямым. При последовательном доступе текущий указатель файла может перемещаться только последовательно; при прямом – произвольно. Следующие типы файлов различаются организацией хранения данных и способом доступа: • Текстовые • Типизированные • Нетипизированные Предназначены для хранения текстовой информации. Компоненты-строки текстового файла могут иметь произвольную длину, поэтому доступ к ним возможен лишь последовательный Предназначены для хранения компонентов любого типа; если компоненты однотипны, то можно организовать прямой доступ Отличаются от остальных тем, что для них не указан тип компонентов. Данные, которые хранятся в таком файле, обрабатываются блоками по N байт. Доступ к блокам прямой. 6
Операции с файлами • Открытие / закрытие файла • Чтение / запись в файл • Перемещение по файлу 7
File. Stream 8
File. Stream /// Создание файла (открытие нового файла) File. Stream file = new File. Stream(@"d: myfile. dat", File. Mode. Create); /// Запись в файл (поток) 3 байт file. Write. Byte( 12 ); file. Write. Byte( 15 ); file. Write. Byte( 29 ); file. Close(); /// Закрытие файла /// Открытие (существующего) файла File. Stream file. To. Read = new File. Stream(@"d: myfile. dat", File. Mode. Open); /// Чтение из файла всех байт for ( int i=0; i<file. To. Read. Length; i++ ) Console. Write. Line( file. To. Read. Byte() ); file. To. Read. Close(); /// Закрытие файла 9
File. Stream Содержимое файла D: myfile. dat Там всего 3 байта (не ASCII-коды символов), поэтому в «блокноте» крокозябры 10
File. Stream Содержимое файла D: myfile. dat Если мы запишем 3 байта: 65, 66 и 67 (это ASCII-коды символов A, B, C), то результат будет более наглядным 11
Stream. Reader и Stream. Writer // 1) File. Stream fs = new File. Stream(@"d: myfile. txt", File. Mode. Create ); Stream. Writer file = new Stream. Writer( fs ); // 2) Stream. Writer file = new Stream. Writer( @"d: myfile. txt" ); // 3) Stream. Writer file = File. Create. Text( @"d: myfile. txt" ); file. Write. Line( "ABC" ); file. Write. Line( "and other stuff" ); file. Write. Line( "that's all!" ); file. Close(); Stream. Reader file. To. Read = File. Open. Text( @"d: myfile. txt" ); string all. Lines = file. To. Read. To. End(); Console. Write. Line( all. Lines ); file. To. Read. Close(); 12
Stream. Reader и Stream. Writer while ( !file. To. Read. End. Of. Stream ) Console. Write. Line( file. To. Read. Line() ); 13
Бинарные файлы File. Stream fss = new File. Stream(@"d: myfile. dat", File. Mode. Create); Binary. Writer file = new Binary. Writer(fss); file. Write( (int)15 ); double d = 34. 45; file. Write( d ); file. Write( "that's all!" ); file. Close(); File. Stream fss. Read = new File. Stream(@"d: myfile. dat", File. Mode. Open); Binary. Reader file. To. Read = new Binary. Reader(fss. Read); int x 1 = file. To. Read. Int 32(); double x 2 = file. To. Read. Double(); string x 3 = file. To. Read. String(); // x 1 = 15 // x 2 = 34. 45 // x 3 = "that's all" file. To. Read. Close(); 14
Бинарные файлы 15
Прямой (произвольный) доступ 16
Перемещение по файлу File. Stream fss. Read = new File. Stream(@"d: myfile. dat", File. Mode. Open); Binary. Reader file. To. Read = new Binary. Reader(fss. Read); fss. Read. Seek(4, Seek. Origin. Begin); double x 2 = file. To. Read. Double(); string x 3 = file. To. Read. String(); // пропускаем 4 байта // x 2 = 34. 45 // x 3 = "that's all“ file. To. Read. Close(); 17
Работа с файловой системой Операции с ФАЙЛАМИ bool File. Exists (string path); void File. Delete (string path); void File. Copy (string source. File. Name, string dest. File. Name); void File. Move (string source. File. Name, string dest. File. Name); void File. Replace (string source. File. Name, string destination. Backup. File. Name); File. Attributes File. Get. Attributes (string path); void File. Set. Attributes (string path, File. Attributes file. Attributes); void File. Decrypt (string path); void File. Encrypt (string path); 18
Работа с файловой системой Date. Time File. Get. Creation. Time (string path); Date. Time File. Get. Last. Access. Time (string path); Date. Time File. Get. Last. Write. Time (string path); void File. Set. Creation. Time (string path, Date. Time creation. Time); void File. Set. Last. Access. Time (string path, Date. Time last. Access. Time); void File. Set. Last. Write. Time (string path, Date. Time last. Write. Time); File. Security File. Get. Access. Control (string path); void File. Set. Access. Control (string path, File. Security file. Security); 19
Работа с файловой системой Операции с ДИРЕКТОРИЯМИ string Directory. Get. Current. Directory (); void Directory. Set. Current. Directory (string path); Directory. Info Directory. Create. Directory (string path); Directory. Info Directory. Get. Parent (string path); string Directory. Get. Directory. Root (string path); string[] Directory. Get. Logical. Drives(); 20
Работа с файловой системой string[] Directory. Get. Files (string path); string[] Directory. Get. Directories (string path); string[] Directory. Get. File. System. Entries (string path); IEnumerable<string> Directory. Enumerate. Files (string path); IEnumerable<string> Directory. Enumerate. Directories (string path); IEnumerable<string> Directory. Enumerate. File. System. Entries (string path); 21
File. Info, Directory. Info File. Info fi = new File. Info(@"c: tempFile. Info. txt"); Console. Write. Line(fi. Name); Console. Write. Line(fi. Full. Name); Console. Write. Line(fi. Directory. Name); Console. Write. Line(fi. Extension); Console. Write. Line(fi. Length); // // // File. Info. txt c: tempFile. Info. txt c: temp. txt 9 22
Пример 1 if ( File. Exists(@"d: myfile. txt") ) { Directory. Create. Directory( @"d: TEMP" ); File. Move( @"d: myfile. txt", @"d: TEMPmyfile. txt" ); File. Info info = new File. Info(@"d: TEMPmyfile. txt"); Console. Write. Line("Size: " + info. Length + " bytes"); Console. Write. Line( info. Last. Access. Time ); Console. Write. Line( info. Directory. Name ); } 23
Пример 2 foreach ( string dirname in Directory. Enumerate. Directories( @"C: Program Files" ) ) { Directory. Info info = new Directory. Info( dirname ); Console. Write. Line( info. Name ); foreach (string filename in Directory. Enumerate. Files(dirname)) { Console. Write. Line( "t" + filename ); } } 24
Работа с полными именами файлов (Path) string dir = @"c: mydir"; string file = "myfile. txt"; string path = @"c: mydirmyfile. txt"; Directory. Set. Current. Directory (@"k: demo"); 25
Работа с полными именами файлов (Path) string dir = @"c: mydir"; string file = "myfile. txt"; string path = @"c: mydirmyfile. txt"; Directory. Set. Current. Directory (@"k: demo"); 26
Работа с полными именами файлов (Path) string dir = @"c: mydir"; string file = "myfile. txt"; string path = @"c: mydirmyfile. txt"; Directory. Set. Current. Directory (@"k: demo"); 27
Programming 08 - Input-Output.pptx