Оглавление
Стр. |
||
Введение ……………………………………………………………………. |
3 |
|
§1. Работа с файлами в Visual Basic……………………………………. |
5 |
|
|
1.1 Типизированные файлы …………………………………… |
6 |
|
1.2 Текстовые файлы …………………………………………… |
12 |
|
1.3 Нетипизированные файлы ………………………………… |
14 |
§ 2. Файловые элементы управления Visual Basic ………………….. |
16 |
|
|
2.1 DriveListBox ..................................................................... |
17 |
|
2.2 DirListBox ……………………………………………………. |
17 |
|
2.3 FileListBox …………………………………………………… |
19 |
§ 3. Модель FSO …………………………………………………………… |
24 |
|
|
3.1 FileSystemObject …………………………………………….. |
25 |
|
3.2 Drive …………………………………………………………… |
26 |
|
3.3 Folder/ File ……………………………………………………. |
27 |
|
3.4 Text Stream …………………………………………………... |
29 |
Заключение …………………………………………………………………. |
32 |
|
Литература .......................................................................................... |
33 |
|
Приложение 1 |
Обработка двух типизированных файлов ……………………………. |
34 |
Приложение 2 |
Обработка двух текстовых файлов …………………………………… |
34 |
Приложение 3 |
Обработка двух нетипизированных файлов ………………………… |
37 |
Приложение 4 |
Приложение «Поиск» ……………………………….. |
39 |
Приложение 5 |
Приложение «Свойство дисков» ………………….. |
44 |
Приложение 6 |
Приложение «Свойство дисков» ………………….. |
46 |
Приложение 7 |
Работа с объектами Folder, File и TextStream …………………………………………… |
49 |
Введение
Среда разработки приложений Visual Basic, является мощным программным средством, позволяющим реализовать широкий спектр практических задач. Основное её достоинство состоит в оптимальном сочетании простоты использования, доступности и большого набора разнообразных возможностей, позволяющих охватить все основные направления деятельности разработчика прикладных программ. Одним из таких направлений является управление файлами.
Управление файлами – это одна из интереснейших задач для программиста в любой системе программирования. При проектировании приложений достаточно часто возникает необходимость работать непосредственно с файлами. Это требуется, например, для добавления, удаления файлов и каталогов, записи данных в файлы или чтение из них как программно, так и в интерактивном режиме. Необходимость работы с файлами возникает также при создании программы инсталляции разработанного приложения на пользовательские компьютеры, чтение данных из файлов при инициализации приложения с использованием файлов настройки, организации вывода файлов на печать. Поэтому данная тема очень актуальна как для начинающих программистов, так и для профессионалов. Visual Basic предоставляет различные операторы, функции и методы для выполнения общих задач управления файлами.
Основной целью данной курсовой работы является изучение операторов, методов и функций Visual Basic для работы с файлами, их основных свойств и событий, а также их применения на практике. Немаловажным являются вопросы использования элементов управления и системы файловых объектов Visual Basic.
Основная задача, которая ставилась при выполнении данной курсовой работы, состоит в том, чтобы понять и изучить принципы и способы сохранения данных в среде программирования Visual Basic. Для выполнения данной задачи изучалась различная литература: Ананьев А.И., Фёдоров А.Ф. Самоучитель Visual Basic 6.0., Глушаков С.В., Сурядный А.С. Программирование на Visual Basic 6.0.
Все примеры приложений выполнены в среде программирования Visual Basic 6.0.
Курсовая работа состоит из введения, трёх параграфов заключения и семи приложений.
В первом параграфе приводятся стандартные операторы, функции и методы для работы с файлами различных типов.
Во втором параграфе описываются элементы управления для работы с файлами и способы их использования.
В третьем параграфе приводятся сведения по работе с системой файловых объектов, даётся информация о каждом из объектов с описанием большого количества методов.
Приложения содержат программные коды приложений, приведённых в качестве примеров в данной курсовой работе.
1. Работа с файлами
Файлом называют область на жёстком диске или другом машинном носителе (например, на дискете), имеющая название и содержащая определённую информацию.
Управление файлами (file management) – термин, используемый для описания действий, которые выполняются с файлами, сохранёнными на дисковых драйверах. Управление файлами включает в себя действия, такие как копирование файлов, удаление неиспользуемых файлов для освобождения области дисковой памяти, перемещение файлов с одного диска (или папки) на другие и создание или удаление каталогов диска. Управление файлами включает также такие виды обработки как просмотр списка файлов в папке для определения размера файла или даты и времени, когда этот файл был модифицирован последний раз.
Существует несколько разновидностей файлов, которые определяют формат хранения данных, в особенности программного доступа к ним:
типизированные (двоичные файлы);
текстовые;
нетипизированные (файлы записей).
Подобное деление файлов на типы достаточно условно и определяется особенностями организации файлов и доступа к данным в них. Например, текстовый файл можно открыть и в режиме двоичного доступа. Если этот файл имеет разделители, то для работы с ним придётся написать специальную процедуру обработки разделителей и разбора данных, так как двоичный доступ обеспечивает побайтовую запись \ чтение из файла. Очевидно, что это неудобно. Именно поэтому введено условное деление файлов на типы в зависимости от формата файла и доступа к данным. Соответственно сгруппированы и функции Visual Basic для записи \ чтения данных.
Тип файла задаёт оптимальный набор функций записи и чтения данных из файла. Поэтому для работы с файлами для написания эффективной программы всегда необходимо иметь представление о типах файлов, с которыми будет работать программа, и об организации хранения данных в этих файлах. Это даёт возможность обеспечить оптимальный доступ и использовать соответствующие этому доступу функции.
Рассмотрим работу с каждым из типов файлов, понимая, что такое разделение на типы достаточно условно, но позволяет обеспечить наиболее эффективную обработку данных для каждого типа.
1.1. Типизированные файлы.
Содержание типизированных файлов рассматривается как последовательность произвольных данных, которые представлены в двоичном виде. К достоинствам этого типа относится экономичность при хранении информации.
С понятием типизированного файла тесно связано понятие указателя на текущий элемент файла. Другими словами, при работе с двоичным файлом в любой момент времени один из элементов файла является "активным", т.е. с ним могут производится какие-либо действия.
Все операции с такими файлами осуществляются поэлементно, причём указатель может быть перемещён на заданное количество байт в любом направлении по содержанию файла. Необходимо отметить, что каждый элемент двоичного файла имеет свой порядковый номер, по которому к нему следует обращаться, причём нумерация начинается с единицы (см. рис. 1).
В типизированных файлах может содержаться любая информация, однако всякий хранящийся элемент занимает определённое количество байт. Поэтому при его извлечении следует использовать переменные соответствующего типа, чтобы данные были корректно обработаны. Например, если извлекать число 257 (тип Integer) в переменную типа Byte, диапазон значений которой [0; 255], то результатом будет число 1 (см. рис. 2).
Следует точно знать элементы каких типов и в каком порядке хранятся в двоичном файле, т.е. где расположен каждый элемент и сколько он занимает байт. Иначе, если указатель будет перемещён не на первый байт очередного элемента, то, по аналогии с предыдущим примером, обработка информации будет выполнена некорректно и приведёт к ошибочным результатам. Например, если первым элементом двоичного файла было записано 2 – байтовое число 257 и после этого во второй байт было занесено число 0, то в этом случае вместо числа 257 будет снова получено число 1, т.к. его 8-ой бит, принадлежащий второму байту, был обнулён (см. рис. 2).
Обработка любого файла начинается с его открытия, а при окончании работы с файлом его необходимо закрыть. Во время работы приложения могут быть одновременно открыты несколько файлов. Поэтому, для того, чтобы не возникло путаницы при обращении к ним, с каждым из файлов в программе отождествляется специальная переменная, называемая файловым номером и определяющая его положение в списке открытых в данный момент файлов. Все операции по обработке файлов в программе выполняются посредством обращения к соответствующим файловым номерам.
1. Открытие файла. Любой файл создаётся или открывается при помощи оператора Open, синтаксис которого зависит от его разновидности. Для двоичных файлов общий вид данного оператора выглядит следующим образом:
Open Путь For Binary As номер
Здесь
Open – служебное слово, используемое при открытии или создании файла;
Путь – строка или переменная типа String, содержание которой является полный путь к требуемому файлу;
For – ключевое слово для определения типа файла;
Binary – служебное слово, используемое при создании или открытии двоичного файла;
As – ключевое слово для определения переменной, содержащей файловый номер, посредством которого будет в дальнейшем осуществляется обработка файла;
Номер – имя переменной, содержащей номер файла.
В дополнении к сказанному следует заметить, что в качестве параметра Путь может быть указано только имя файла. В этом случае работа с файлами будет происходить в том каталоге, который по умолчанию является рабочим в среде Visual Basic. Для работы с каталогами и дискетами существует несколько функций и операторов (см. табл. 1).
Таблица 1. Функции и операторы для работы с каталогами и дисками
Название |
Описание |
ChDir (путь) |
Оператор, устанавливающий новый рабочий каталог на текущем диске |
ChDrive (диск) |
Оператор для определения нового рабочего диска |
CurDir |
Функция, возвращающая путь к рабочему каталогу |
MkDir (путь) |
Оператор, создающий новый каталог |
RmDir (путь) |
Оператор для удаления существующего каталога, который может быть пуст |
2. Закрытие файла. По окончании работы с любым файлом его необходимо закрыть при помощи оператора Close, синтаксис которого одинаков для всех типов файлов:
Close номер
3. Удаление файла. В случае необходимости удаления файла с диска используется оператор Kill, формат которого аналогичен оператору Close. Не стоит забывать, что перед удалением файла его необходимо обязательно закрыть.
4. Определение файлового номера. Если в программе открыто несколько файлов, то для каждого из них определён свой файловый номер. Для того, чтобы определить значение первого свободного номера для очередного открытого файла, следует использовать функцию FreeFile, результат выполнения которой присваивается переменной-номеру:
Переменная-номер = FreeFile
5. Переименование файла. В том случае, когда необходимо дать файлу новое имя, следует вначале его закрыть, а затем воспользоваться оператором Name, синтаксис которого следующий:
Name Путь1 As Путь2,
где Путь1 – строка или переменная типа String, которого содержит путь к исходному файлу;
Путь2 - строка или строковая переменная, содержимым которой является новый путь к файлу.
Следует заметить, что если на диске уже существует файл с таким же полным названием, т.е. Путь2, то при выполнении оператора Name возникает ошибка.
6. Копирование файла. При необходимости создания копии какого-либо файла применяется оператор FileCopy, перед выполнением которого копируемый файл должен быть закрыт.
FileCopy Путь 1, Путь 2,
где Путь 1 – путь к исходному файлу;
Путь 2 – путь к новому файлу.
При работе с открытым файлом возможно выполнение двух операций: занесение данных и считывание информации.
7. Запись в файл. Для того, чтобы записать в двоичный файл какую-либо информацию, следует воспользоваться оператором Put.
Put номер, Позиция, Переменная
Здесь Номер – переменная, которая содержит файловый номер;
Позиция – порядковый номер байта, начиная с которого будет заноситься информация;
Переменная – название переменной, содержимое которой записывается в файл.
8. Извлечение из файла. Для извлечения информации из файла применяется оператор Get, формат которого совпадает с оператором Put.
Get Номер, Позиция, Переменная.
При выполнении оператора Get в Переменную заносится информация из файла с указанным Номером, расположенная в нём по адресу Позиция.
В дополнение к описанию операторов Put и Get следует заметить, что перед номером файла можно указывать знак #.
Обработка данных в файлах любого типа осуществляется с учётом положения указателя. Для того, чтобы определить порядковый номер обрабатываемого элемента, следует применять функцию Seek.
Seek (Номер).
Результатом вызова функции Seek будет текущая позиция, которую занимает указатель в файле с заданным Номером.
Следует отметить, что в названиях дисков, каталогов и файлов можно указывать как прописные, так и строчные буквы, хотя для Windows или языка Visual Basic в данном случае они означают одно и то же.
Пример 1. Требуется на диске С: создать каталог TEXT и назначить его рабочим, затем в нём в свою очередь, создать файлы a1.bin и a2.bin. После этого необходимо заполнить файл a1.bin значениями массива arrA, состоящего из 10 элементов типа Integer, которые четвёртые степени целых чисел от 1 до 10. Затем требуется извлечь содержимое файла a1.bin в массив arrB, в котором после этого необходимо вычислить квадратные корни всех элементов. Последней операцией должно быть занесение содержимого массива arrB в файл a2.bin. После выполнения всех действий оба файла необходимо закрыть и удалить. Затем назначить рабочим тот каталог C:\Program Files, после чего удалить TEXT (см. рис. 3).
Решение данной задачи продемонстрировано в Приложении 1.
1.2. Текстовые файлы
Содержимым текстовых файлов является последовательность строк произвольной длинны, которые были созданы при помощи кого-либо текстового редактора. При этом в конце каждой строки находится особое сочетание символов, которое означает её окончание и состоит из "возврата каретки" (код в таблице символов = 13) и "перевода строки" (код 10). В дополнение к сказанному следует заметить, что любой файл, независимо от типа, всегда завершается специальным символом "конец строки" (код = 26).
Хранение числовых данных в текстовых файлах не является эффективным, т.к. каждый элемент будет представлен в виде последовательности символов. Следовательно, если необходимо хранить в файле, например, восьмизначные числа (тип Long), которые занимают в памяти 4 байта, то для каждого из них в текстовом файле будет отведено 8 байт – по 1 байту на один символ.
Операции с текстом должны выполняться построчно, при этом после обработки очередной строки указатель автоматически перемещается на следующую строку. Если в ходе выполнения программы необходимо проверить условие достижения конца файла, то следует применять функцию Eof (номер), результатом которой является логическое значение (True или False).
1. Открытие файла. Для того, чтобы открыть текстовый файл, используется оператор Open следующего формата
Open путь For назначение As номер
Здесь, в отличие от формата, применяемого при работе с двоичными файлами, после служебного слова For в качестве назначения для открываемого файла используются:
Input – файл открывается для считывания из него информации;
Output – файл открывается для редактирования его содержания;
Append – файл открывается для добавления в него новых строк.
При использовании в операторе Open ключевого слова Input открываемый файл должен существовать, в противном случае возникает ошибка. С другой стороны, служебные слова Output и Append можно применять как для открытия, так и для создания текстовых файлов. При этом, если файл уже открыт, например, для извлечения данных, то для добавления строк его необходимо вначале закрыть (Close), а затем открыть с указанием соответствующего назначения.
2. Добавление строк. Для добавления новых строк в файл используется оператор Print, формат которого следующий:
Print # номер, переменная
При выполнении данного оператора в конец файла с указанным номером, открытого при помощи ключевого слова Append, будет добавлена новая строка из переменной.
Для изменения содержимого имеющегося текстового файла его необходимо вначале открыть с помощью служебного слова Output, а затем воспользоваться описанным выше оператором Print. В этом случае изменения будут внесены в начало файла.
3. Извлечение информации из файла. В языке Visual Basic существуют несколько возможных вариантов извлечения информации из текстового файла.
Оператор Line Input – используется для занесения в программу переменных строк из файла. Синтаксис этого оператора следующий:
Line Input # номер, переменная
Функция Input - применяется для извлечения в строковую переменную заданного количества символов из файла и имеет следующий формат:
Input (число, номер)
Результатом вызова данной функции является указанное число символов, скопированных из файла с определённым номером.
Пример 2. Требуется создать на диске С каталог Text, в котором необходимо создать текстовый файл a.txt и занести в него информацию, состоящую из нескольких строк.
После этого файл следует закрыть и затем открыть его в режиме чтения, одновременно с этим нужно создать новый файл b.txt и скопировать в него все строки из a.txt. Затем требуется добавить в b.txt ещё одну строку и определить размер обоих файлов. После всех выполненных действий необходимо закрыть оба файла, удалить их, а также удалить каталог Text (см. рис. 4).
Решение данной задачи продемонстрировано в Приложении 2.
1.3. Нетипизированные файлы
Информация в нетипизированных файлах хранится в виде набора одинаковых записей определённой структуры. Размер одной записи является значением суммы размеров всех её полей.
1. Открытие файла. Для того, чтобы открыть файл записей, необходимо воспользоваться оператором Open, аналогично рассмотренным ранее типам файлов. Однако его формат в этом случае несколько отличается от предыдущих, так как необходимо указывать размер записей, которые содержаться в файле:
Open путь [For Random] As номер Len=размер
В этом случае в операторе Open указывать тип с использованием служебного слова [For Random] необязательно, так как данный режим используется по умолчанию. Размер используемых записей задаётся при помощи ключевого слова Len. При этом, если запись, добавляемая в файл будет больше указанного размера, то в результате выполнения операции возникает ошибка.
2. Занесение в файл и извлечение из файла. Для занесения содержимого записи в файл используется оператор Put, как при работе с двоичными файлами:
Put номер, позиция, переменная
Отличие заключается в том, что под позицией понимается порядковый номер записи в нетипизированном файле.
Аналогичным образом, для извлечения определённой записи из файла в переменную соответствующего типа применяется оператор Get:
Get номер, позиция, переменная
В этом операторе также, как и в операторе Put, позицией является порядковый номер записей в файле.
Пример 3. Необходимо описать в программе следующую структуру для записей, которую следует назвать Session:
Name As String*30
Number As Long
Phisics As Byte
Math As Byte
Progr As Byte
And Type
После этого требуется создать на диске С: каталог Record, в котором необходимо создать файл записей a.dat и записать в него 2 одинаковые записи типа Session при помощи переменной Rec1. Затем нужно извлечь вторую запись из файла в переменную Rec2, после чего изменит в ней значения полей Name, Number, Progr. Отредактированную запись следует вновь поместить в файл a.dat с порядковым номером 2. После всех выполненных действий следует закрыть a.dat, удалить его, а также удалить каталог Record (см. рис. 5).
Решение
данной задачи продемонстрировано в
Приложении 3.
§ 2. Файловые элементы управления
В языке Visual Basic у разработчика имеются широкие возможности работы с файловой системой, которые представляют изученный ранее диалоги Common Dialog, набор файловых операторов и функций, рассмотренных в п1, а также файловые элементы управления и модель объекта файловой системы.
Все файловые элементы управления, как правило, используются в тесной взаимосвязи друг с другом с целью обеспечения максимальной гибкости и простоты разрабатываемого приложения. С их помощью разработчик получает доступ к системной информации, а также возможность задавать свойства данных элементов для того, чтобы определить, что именно будет отображаться на экране в случае тех или иных действий пользователя.
Существует три файловых элемента управления:
DriveListBox (Список дисков)
DirListBox (Список каталогов)
FileListBox (Список файлов)
2.1. DriveListBox (Список дисков)
Данный элемент управления представляет собой ниспадающий список, в котором по умолчанию отображается диск, являющийся текущим. Если в процессе работы приложения пользователю нужно сменить обозначение диска, то сделать это можно двумя способами. Во-первых, при помощи мыши раскрыть список, щёлкнуть на стрелке в правой части объекта, с последующим выбором требуемого элемента. Во-вторых, задать нужное название, используя для этого стрелки управления курсором, когда объект имеет фокус.
Имеется возможность задать программным образом диск, который будет использоваться по умолчанию, т.е. который будет являться текущим при запуске приложения. Для этого следует воспользоваться свойством Drive (Устройство), присвоив ему соответствующее значение в процедуре загрузки главной формы Form_Load, например:
Private Sub Form_Load()
DrvSearch.drive=”C:”
End Sub.
Однако необходимо отметить, что выбор пользователем того или иного диска из имеющегося списка не приводит к автоматической установке в операционной системе нового текущего диска. Для выполнения этого действия необходимо воспользоваться оператором ChDrive, указав выбранный диск в качестве параметра, например:
chDrive drvSearch.Drive
2.2. DirListBox (Список каталогов)
Этот элемент управления представляет собой древовидную структуру, отображающую каталоги того диска, который на данный момент является текущим. Первым элементом списка является текущий диск, под которым расположены находящиеся в нём каталоги, смещённые на одну позицию вправо (корневой каталог). Если пользователь открывает один из них при помощи двойного щелчка мыши, то в этом случае список изменяется таким образом, что в нём после названия текущего каталога отображаются только название его подкаталогов, смещённые ещё на одну позицию вправо (каталог первого уровня) и т.д. (см. рис. 6). Иными словами, информация в данном случае выводится в том же виде, что и в левой части Проводника Windows.
Слева от каждого элемента списка находится изображение папки. Если каталог открыт, то папка отображается раскрытой и наоборот. Открывается тот или иной каталог из списка также при помощи клавиши Enter, предварительно выделив его название, используя стрелки управления курсором. Однако в этом случае требуется дополнительная программная обработка данного действия.
Так же, как и при работе с дисками, можно установить каталог, который будет являться текущим, используя свойство Path (Путь) для элемента DirListBox, например:
Private Sub Form_Load()
DirSearch.Path=”C:\Мои документы”
End Sub
Аналогично работе с дисками для установления в операционной системе нового текущего каталога изменение свойства Path будет недостаточно. С этой целью необходимо воспользоваться оператором ChDir, указав в качестве параметра требуемый каталог:
ChDir dirSearch.Path
Так как элемент управления DirListBox представляет собой список, то для него так же, как и для обычных списков, имеется возможность доступа к элементам и их обработки с помощью свойств List (Список), ListIndex (Текущий элемент списка), ListCount (Количество элементов в списке). Однако имеется глобальное различие в системе, используемой для обработки значения свойства ListIndex.
Для каталога, путь к которому совпадает со значением свойства Path элемента управления DirListBox, свойство ListIndex всегда равно -1, независимо от того, на каком уровне он расположен. Каталог, расположенный на один уровень выше текущего, имеет свойство ListIndex, равное -2, и т.д. Завершением этой последовательности является корневой каталог текущего диска.
Соответственно, первый по порядку подкаталог текущего каталога, имеет свойство ListIndex, равное 0. Для второго по счёту каталога ListIndex=1 и т.д.
В данном случае для изображения каталогов значения свойства ListIndex приведены в таблице 2.
Таблица 2. Значение свойства ListIndex для дерева каталогов
Название каталога |
Значение ListIndex |
C:\ |
-3 |
Program Files |
-2 |
VB98 |
-1 |
Date&Time |
0 |
First |
1 |
Setup |
2 |
Template |
3 |
Wizards |
4 |
Значением свойства ListCount для выбранного каталога является количество его подкаталогов.
2.3. FileListBox (Список файлов)
Данный элемент управления представляет собой список, отображающий файлы, которые располагаются в каталоге, указанном в свойстве Path. Как правило, этот объект используется вместе со списком каталогов (DirListBox), поэтому, когда пользователь в приложении выбирает нужный ему каталог, то в программе при этом должен выполняться следующий оператор присваивания:
FileSearch.Path=dirSearch.path
В данном случае для выбранного пользователем каталога будет автоматически отображаться список содержащихся в нём файлов.
Для того, чтобы ограничить количество выводимых файлов каким-то именем, расширением и т.д. (т.е. шаблоном), необходимо воспользоваться свойством Pattern, которое позволяет задать один или несколько шаблонов. При этом следует заметить, что в последнем случае в качестве разделителя используется точка с запятой, например:
FileSearch.Pattern=”*.txt; *.exe”
Любому файлу в каталоге может быть задан один из следующих атрибутов (или свойств) или сразу несколько из них:
ReadOnly – только чтение
Archive - архивный
Normal - нормальный
Hidden - скрытый
System - системный
При отображении файлов, имеющих в текущем каталоге, помимо ограничения в виде одного или шаблонов (свойство Pattern), можно также фильтровать список выводимых файлов на предмет наличия какого-либо атрибута или их сочетания. Для этого следует присваивать в программе соответствующим свойствам элемента FileListBox значения True или False, в зависимости от того, какие именно атрибуты должны быть заданы для отображаемых файлов.
Следует отметить тот факт, что свойства Archive, ReadOnly и Normal по умолчанию принимают значение True, в то время как свойства
Hidden и System равны значению False. Другими словами, в списке будут по умолчанию отображаться все файлы, кроме скрытых и системных.
Если свойство Normal элемента FileListBox имеет значение True, то в этом случае отображаются файлы без атрибутов, а также с атрибутами ReadOnly и\или Archive. С другой стороны, если свойство Normal имеет значение False, то в списке могут быть отображены файлы с любыми атрибутами, в том числе Readonly и Archive, если присвоить соответствующим свойствам значения True, например:
With FileSearch
Normal=False
ReadOnly=True
Archive=True
End with
Однако таким образом нельзя устанавливать атрибуты для выбранных файлов из списка. С этой целью следует использовать процедуру SetAttr, которая имеет следующий формат:
SetAttr (путь, атрибут)
Здесь в качестве параметра Путь используется путь к требуемому файлу, а значение параметра Атрибут выбирается в соответствии с таблицей 3. Но при этом для последнего могут быть использованы только следующие константы (или их числовые значения): VbNormal, VbReadOnly, VbHidden, VbSystem, VbArchive.
Аналогичным образом можно выяснить атрибуты выбранного файла. Для этого используется функция GetAttr, результатом которой является числовое значение, соответствующее определённому атрибуту или их сочетанию. Формат команды в этом случае имеет следующий вид:
Переменная = GetAttr (путь)
Параметр Путь, используемый как в процедуре SetAttr, так и в процедуре GetAttr, представляет собой путь к каталогу, в котором находится указанный файл, в сочетании с его названием. Например путь к файлу a.txt расположенному в каталоге Text диска С, будет выглядеть следующим образом: C:\ text \ a.txt.
При этом Переменной будет присвоено значение в соответствии с таблицей 3.
Таблица 3. Описание констант при работе с атрибутами.
Константа |
Значение |
Описание |
VbNormal |
0 |
Нормальный |
VbReadOlly |
1 |
Только чтение |
VbHidden |
2 |
Скрытый |
VbSystem |
4 |
Системный |
VbVolume |
8 |
Метка тома |
VbDirectory |
16 |
Каталог |
VbArchive |
32 |
Архивный |
VbAlias |
64 |
Алиас (псевдоним) |
Для того, чтобы получить в программе доступ к определенному файлу, необходимо воспользоваться свойством FileName элемента FileListBox, установив перед этим выбранный пользователем каталог в качестве текущего на уровне системы (оператор ChDir). Другая возможность заключается в совместном использовании значений: следующих свойств: Path и FileName. Например, требуется установить атрибуты ReadOnly и Hidden файлу a.txt, расположенному в каталоге С:\ТЕХТ.
Ниже приведены два примера программного кода для выполнения данной задачи, используя обе описанные возможности. При этом предполагается, что пользователь выбрал в списке каталогов название TEXT, а в списке файлов - название a.txt
1. Установка текущего каталога.
ChDir dirSearch.Path
strPath = fil.Search.Filename
strAttr = vbReadOnly + vbHidden
SetAttr strPath, strAttr
2. Использование свойств Path и Filename.
strPath = filSearch.Path + "\" + _ filSearch.FileName
strAttr = vbReadOnly + vbHidden
SetAttr strPath, strAttr
При работе с файловым списком имеется возможность выбора не только одного, но и нескольких файлов. Для этого используется свойство MultiSelect, которое может принимать следующие значения:
1- None (можно выделить только один файл);
2 - Simple (при каждом щелчке в группу добавляется выделенный файл или удаляется из нее, если он ужё был в группе);
3 - Extended (выделение файлов осуществляется так же, как и в программе Проводник - с использованием клавиш Shift и Ctrl).
Если в списке выделены несколько файлов, то доступ к их названиям можно получить, проверяя значение свойства Selected для каждого элемента списка, аналогично работе с ListBox и СоmbоВох.
Пример 4.
Для иллюстрации возможностей работы с файловыми элементами управления будет рассмотрено приложение "Поиск", которое отображает файлы текущего каталога в зависимости от указанного пользователем шаблона, а также от заданных атрибутов (см. рис. 7).
Решение данной задачи продемонстрировано в Приложении 4.
§3. Модель FSO
Для работы c дисками, каталогами (папками) и файлами в Visual Basic помимо стандартного набора операторов, процедур и функций, имеется также новая модель, которая носит название FSO (File System Object – объект файловой системы). Данная модель даёт возможность разработчику использовать синтаксис, применяемый при работе с объектами, и содержит множество методов, свойств и событий в дополнение к известным операторам.
Основой модели FSO являются объекты, описание которой приведено в таблице 4.
Таблица 4. Описание объектов, используемых в модели FSO.
Название |
Описание |
FileSystemObject |
Позволяет работать с любыми элементами файловой системы: дисками, папками, файлами. |
Drive |
Даёт возможность получения информации о дисках. Это касается не только чистого диска, но также дисководов, устройств чтения компакт дисков или виртуальных дисков. |
Folder |
Позволяет выполнять любые действия с папками: копировать, перемещать, удалять и т.д. |
File |
Даёт возможность обрабатывать файлы: перемещать, копировать, удалять и т.д. |
Text Stream |
Позволяет обрабатывать текстовые файлы, т.е. считывать и заносить информацию. |
Для того чтобы получить возможность обработки файловой системы с помощью модели FSO, необходимо вначале проверить, установлена ли в среде разработки её поддержка. Для проверки (или установки) библиотеки Scripting, содержащей модель FSO, необходимо выполнить следующую последовательность действий:
Открыть меню Project;
Выполнить команду Referernces;
В появившемся диалоговом окне следует установить ссылку Microsoft Scripting Runtime и нажать Ok.
Новые методы системы FSO расширяют и дополняют традиционные возможности Visual Basic при работе с файлами. Использование системы FSO состоит из трёх этапов:
Создание объекта системы FSO.
Настройка требуемых методов объекта FSO.
Настройка доступных свойств объекта FSO.
Создать объект системы FSO можно объявлением переменной типа FSO:
Dim NewFSO As New FileSystemObject
Для создания объекта можно также использовать следующий оператор:
Set NewFSO=CreateObject (“Scripting.FileSystemObject”)
В данном случае Scripting.FileSystemObject – это требуемый объект с указанием библиотеки
После этого можно работать со свойствами и методами объекта NewFSO как со всеми другими объектами приложения.
Далее будут рассмотрены все объекты модели FSO с описанием их свойств и методов. Для того, чтобы получить более подробное описание, можно воспользоваться окном Object Browser.
Объект FileSystemObject
Данный объект позволяет обрабатывать любой элемент файловой системы, будь то каталог, файл или диск, поэтому многие действия из тех, которые будут описаны ниже, могут быть также выполнены при помощи методов объектов модели FSO.
При использовании данного объекта разработчик может оперировать одним из методов, приведённых в таблице 5.
Таблица 5. Перечень основных методов объекта FileSystemObject
Название |
Описание |
CopyFile |
Копирование файла |
CopyFolder |
Копирование папки |
CreateFolder |
Создание папки |
CreateTextFile |
Создание текстового файла |
DeleteFile |
Удаление файла |
DeleteFolder |
Удаление папки |
DriveExists |
Проверка существования диска |
FileExists |
Проверка существования файла |
FolderExists |
Проверка существования папки |
GetDrive |
Получение доступа к диску |
GetDriveName |
Получение имени диска |
GetFile |
Получение доступа к файлу |
GetFileName |
Получение имени файла |
GetFolder |
Получение доступа к папке |
MoveFile |
Перемещение файла |
MoveFolder |
Перемещение папки |
OpenTextFile |
Открытие текстового файла |
3.2. Объект Drive
Этот объект используется для работы с дисками. Свойства, используемые в этом случае, приведены в таблице 6.
Таблица 6. Перечень свойств объекта Drive
Название |
Описание |
AvailableSpase |
Объём доступного места на диске в байтах |
DriveLetter |
Обозначение диска |
DriveType |
Тип диска |
FileSystem |
Тип файловой системы диска |
FreeSpace |
Объём свободного места на диске в байтах |
IsReady |
Доступность диска |
Path |
Путь к диску |
RootFolder |
Корневой каталог диска |
SerialNumber |
Серийный номер диска |
ShareName |
Разделяемое имя диска |
TotalSize |
Полный размер диска в байтах |
VolumeName |
Метка тома или диска |
Пример 5. В качестве иллюстрации возможности работы с дисками при помощи объекта Drive будет рассмотрено приложение «Свойства дисков», отображающее на форме некоторые свойства выбранного диска (см. рис. 8).
Решение данной задачи продемонстрировано в Приложении 5.
Объекты Folder и File
Объект Folder применяется при обработке каталогов. Используемые с этой целью свойства и методы приведены в таблицах 7 и 8.
Объект File используется для обработки файлов, причём практически все свойства и методы в этом случае совпадают для объекта Folder, за исключением тех, которые не имеет смысла использовать при обработке файлов, например, свойство SubFolders и IsRootFolder.
Таблица 7. Свойство объектов Folder \ File
Название |
Описание |
Attributes |
Атрибуты папки \файла |
DateCreated |
Дата создания папки \файла |
DateLastAccessed |
Дата последнего использования папки \файла |
Drive |
Получение диска, содержащего папку \файл |
Folder.Files |
Набор файлов папки |
Folder.IsRootFolder |
True, если каталог является корневым |
Name |
Имя папки \файла |
ParentFolder |
Имя родительской папки |
Path |
Путь к папке \файлу |
Shortname |
Краткое имя папки \файла |
Shortpath |
Краткий путь к папке \файлу |
Size |
Полный размер папки \файла |
Folder.SubFolders |
Набор подкаталогов папки |
Type |
Тип папки \файла |
Таблица 8. Перечень методов объектов Folder/File
Название |
Описание |
Copy |
Копирование папки \файла |
Folder.CreateTextFile |
Создание в папке текстового файла |
Delete |
Удаление папки \файла |
Move |
Переименование папки \файла |
File.OpenAsTextStream |
Открытие файла как текстового потока |
Пример 6. Для того чтобы показать возможности обработки каталогов и файлов при помощи объектов Folder и File, будет рассмотрено приложение "Свойства папок и файлов", которое отображает на форме свойства выбранного каталога и файла, (см. рис. 9).
Решение данной задачи продемонстрировано в Приложении 6.
3.4. Объект TextStream
Данный объект применяется для работы с текстовыми файлами. Используемые в этом случае свойства и методы приведены в табл. 9 и 10. Следует заметить, что последовательный текстовьай файл также носит название "текстового потока".
Таблица 9. Перечень свойств объекта TextStream
Название |
Описание |
AtEndOfLine |
Является ли текущая позиция концом строки |
AtEndOfStream |
Является ли текущая позиция концом текстового потока |
Соlumn |
Номер позиции в текущей строке |
Line |
Номер текущей строки |
Табпица 10. Перечень методов объекта TextStream
Название |
Описание |
Close |
Закрывает текстовый поток |
Read |
Читает из файла в строковую пере менную указанное количество символов |
Read all |
Читает в строковую переменную весь текстовый файл |
ReadLine |
Читает из файла в строковую переменную указанную строку |
Skip |
Пропускает указанное количество символов в текстовом файле |
SkipLine |
Пропускает текущую строку |
Write |
Записывает в файл содержимое строковой переменной |
WriteBlankLines |
Записывает в файл указанное количество пустых строк |
WriteLine |
Записывает в файл содержимое стро ковой переменной, а также символ конца строки |
Пример 7. Для иллюстрации работы с текстовым файлом при помощи объекта TextStream будет рассмотрена следующая задача. Пусть в корневом каталоге требуетея создать каталоги Dir1 и Diг2. После этого непбходимо в каталогах Dir1 создать текстовый файл a.txt и записать в негo информацию произвольного содержания. Затем нужно переместить данный файл в каталог Dir2, после этого скопировать его снова в каталог Dir1. Завершающим действием должно быть удаление созданных каталогов (см. рис. 10).
Решение
данной задачи продемонстрировано в
Приложении 7.
Заключение
В данной курсовой работе были рассмотрены стандартные операторы, функции и методы Visual Basic для работы с файлами различных типов, файловые элементы управления и объекты файловой системы, а также показаны примеры их применения на практике.
Тема работы с файлами является очень актуальной, так как управление файлами находит своё применение в приложениях различных типов и имеет большое практическое значение. Не одна задача современного программирования не обходится без решения вопроса сохранения данных.
Данная работа может быть использована студентами для изучения операторов, функция и методов Visual Basic, которые позволяют выполнять различные задачи управления файлами.
Литература
1. |
Microsoft Visual Basic 6.0 для профессионалов. Шаг за шагом. |
2. |
Азбука Технологий Программирования - сервер о технологиях программирования Visual Basic, VB, VBScript, ASP, Базы Данных, СУБД, VBA, C++, Утилиты, Справочники. - http://www.azbukavb.narod.ru/vb.html |
3. |
Ананьев А.И., Фёдоров А.Ф. Самоучитель Visual Basic 6.0. – СПб.: БХВ - Петербург, 2002. – 624 с.: ил. |
4. |
Глушаков С.В., Сурядный А.С. Программирование на Visual Basic 6.0. – М.: «Фолио», 2002. – 497с. |
5. |
Кузьменко В.Г. Visual Basic 6. Самоучитель. Второе издание. - М Бином, 2003. – 432с.: ил. |
6. |
Лукин С.Н. Visual Basic 6.0: Самоучитель для начинающих |
7. |
Симонович С.В. , Евсеев Г.А. Занимательное программирование: Visual Basic. – М.: АСТ-Пресс Книга: Информком-Пресс, 2001. – 320с. |
Приложение 1
Обработка двух типизированных файлов
Формулировка задачи. Требуется на диске С: создать каталог TEXT и назначить его рабочим, затем в нём в свою очередь, создать файлы a1.bin и a2.bin. После этого необходимо заполнить файл a1.bin значениями массива arrA, состоящего из 10 элементов типа Integer, которые четвёртые степени целых чисел от 1 до 10. Затем требуется извлечь содержимое файла a1.bin в массив arrB, в котором после этого необходимо вычислить квадратные корни всех элементов. Последней операцией должно быть занесение содержимого массива arrB в файл a2.bin (см. рис. 11).
После выполнения всех действий оба файла необходимо закрыть и удалить. Затем назначить рабочим каталог C:\Program Files, после чего удалить TEXT .
Программный код. Обработка двух типизированных файлов
Option Explicit
Dim FPath1 As String
Dim FPath2 As String
Dim DPath As String
Private Sub Form_Load()
Dim FNum1 As Integer
Dim Fnum2 As Integer
Dim arrA(1 To 10) As Integer
Dim arrB(1 To 10) As Integer
Dim i As Byte
' Создание каталога C:\TEXT
DPath = "C:\text"
MkDir DPath
'Назначение каталога C:\TEXT рабочим
ChDir DPath
FPath1 = "a1.bin"
FPath2 = "a2.bin"
' Определение свободного файлового номера
FNum1 = FreeFile
'Открытие файла a1.bin
Open FPath1 For Binary As FNum1
'Определение свободного файлового номера
Fnum2 = FreeFile
'Открытие файла a2.bin
Open FPath2 For Binary As Fnum2
For i = 1 To 10
'Заполнение массива arr A
arrA(i) = i ^ 4
'Заполнение файла a1.bin
Put FNum1, i * 2 - 1, arrA(i)
Next
For i = 1 To 10
'Извлечение из файла a1.bin в массив arrB
Get FNum1, i * 2 - 1, arrB(i)
'Вычисление квадратного корня
arrB(i) = Sqr(arrB(i))
'Заполнение файла a2.bin
Put Fnum2, i * 2 - 1, arrB(i)
Next
'Закрытие файлов
Close FNum1
Close Fnum2
Dir1.Path = "C:\text"
End Sub
Private Sub Command1_Click()
'Удаление файлов с диска
Kill (FPath1)
Kill (FPath2)
'Назначение рабочего каталога
ChDir ("C:\")
'Удаление пустого каталога TEXT
RmDir ("C:\TEXT")
End Sub
Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub
Необходимо обратить внимание на использованную в данном примере адресацию, т.е. вычисление выражений для того, чтобы получить порядковый номер байта для очередного элемента. В качестве использовано выражение i * 2 – 1, в котором переменная i принимала значения от 1 до 10. Таким образом, последовательность формируемых адресов была следующей: 1, 3, 5, . . . , 19. Эта адресация была использована в виду того, что каждая переменная типа Integer занимает в памяти 2 байта, а нумерация в двоичном файле начинается с 1
Приложение 2
Обработка двух текстовых файлов
Формулировка задачи. Требуется создать на диске С каталог Text, в котором необходимо создать текстовый файл a.txt и занести в него информацию, состоящую из нескольких строк.
После этого файл следует закрыть и затем открыть его в режиме чтения, одновременно с этим нужно создать новый файл b.txt и скопировать в него все строки из a.txt. Затем требуется добавить в b.txt ещё одну строку и определить размер обоих файлов. После всех выполненных действий необходимо закрыть оба файла, удалить их, а также удалить каталог Text (см. рис. 12).
Программный
код.
Обработка двух текстовых файлов
Option Explicit
Dim FPath1 As String
Dim FPath2 As String
Private Sub Form_Load()
Dim FNum1 As Integer
Dim FNum2 As Integer
Dim i1 As Integer
Dim i2 As Integer
Dim strA As String
MkDir ("C:\text")
ChDir ("C:\text")
FPath1 = "a.txt"
FPath2 = "b.txt"
FNum1 = FreeFile
'Редактирование файла a.txt
Open FPath1 For Output As FNum1
strA = "Создан текстовый файл,"
Print #FNum1, strA
strA = "который состоит"
Print #FNum1, strA
strA = "из нескольких строк"
Print #FNum1, strA
Close FNum1
FNum1 = FreeFile
Open FPath1 For Input As FNum1
FNum2 = FreeFile
Open FPath2 For Append As FNum2
'Копирование a.txt и b.txt
Do Until EOF(FNum1)
Line Input #FNum1, strA
Print #FNum2, strA
Loop
'Добавление новой строки в b.txt
strA = "Добавлена новая строка"
Print #FNum2, strA
'Определение размеров a.txt и b.txt
i1 = LOF(FNum1) 'Результат: 63
i2 = LOF(FNum2) 'Результат: 88
Print #FNum2, Str(i1)
Print #FNum2, Str(i2)
Close FNum1
Close FNum2
Dir1.Path = "C:\text"
End Sub
Private Sub Command1_Click()
Kill (FPath1)
Kill (FPath2)
ChDir ("C:\")
RmDir ("C:\text")
End Sub
Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub
Приложение 3
Обработка двух нетипизированных файлов
Формулировка задачи. Необходимо описать в программе следующую структуру для записей, которую следует назвать Session:
Name As String*30
Number As Long
Phisics As Byte
Math As Byte
Progr As Byte
And Type
После
этого требуется создать на диске С:
каталог Record, в котором необходимо создать
файл записей a.dat и записать в него 2
одинаковые записи типа Session при помощи
переменной Rec1. Затем нужно извлечь
вторую запись из файла в переменную
Rec2, после чего изменит в ней значения
полей Name, Number, Progr. Отредактированную
запись следует вновь поместить в файл
a.dat с порядковым номером 2. После всех
выполненных действий следует закрыть
a.dat, удалить его, а также удалить каталог
Record (см. рис. 13).
Программный код . Обработка двух нетипизированных файлов
'Объявление нового типа
Private Type Session
Name As String * 30
Number As Long
Phisics As Byte
Math As Byte
Progr As Byte
End Type
Option Explicit
Dim FPath As String
Private Sub Form_Load()
Dim rec1 As Session
Dim rec2 As Session
Dim FNum As Integer
Dim NRec As Integer
'Заполнение переменной rec1
With rec1
.Name = "Иванов Иван Иванович"
.Number = 123456
.Phisics = 4
.Math = 5
.Progr = 3
End With
MkDir ("C:\Record")
ChDir ("C:\Record")
FPath = "a.dat"
FNum = FreeFile
'Определение размера перменнной rec1
NRec = LenB(rec1)
'Открытие файла a.dat
Open FPath For Random As FNum Len = NRec
'Запись двух одинаковых записей
Put FNum, 1, rec1
Put FNum, 2, rec1
'Извлечение второй записи в переменную rec2
Get FNum, 2, rec2
'Редактирование rec2
With rec2
.Name = "Петров Пётр Петрович"
.Number = 111111
.Progr = 5
End With
'Занесение изменённой записи в файл
Put FNum, 2, rec2
Close FNum
Dir1.Path = "C:\Record"
End Sub
Private Sub Command1_Click()
Kill (FPath)
ChDir ("C:\Program Files")
RmDir ("C:\Record")
End Sub
Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub
Приложение 4
Приложение «Поиск»
Формулировка задачи. Для иллюстрации возможностей работы с файловыми элементами управления будет рассмотрено приложение "Поиск", которое отображает файлы текущего каталога в зависимости от указанного пользователем шаблона, а также от заданных атрибутов (см. рис.14).
Решение.
Элементы управления, которые будут использованы в данной программе, а также значение их основных свойств приведены в таблице 11.
Таблица 11. Элементы управления в приложении "Поиск" и их свойства
Элемент |
Свойство |
Значение |
Список дисков |
(Name) |
Drive1 |
Список каталогов |
(Name) |
Dir1 |
Список файлов |
(Name) |
File1 |
Pattern |
*.* |
|
Текстовое поле для шаблона |
(Name) |
Text1 |
Text |
*.* |
|
Метка отображе- ния количества файлов |
(Name) |
lblValue |
Кнопка для поиска |
(Name) |
Command1 |
Caption |
Поиск |
|
Кнопка для выхода |
(Name) |
Command2 |
Caption |
Выход |
Программный код приложения "Поиск"
Option Explicit
Private Sub Command2_Click()
End
End Sub
Private Sub Command1_Click()
With File1
'Шаблон (ы)
.Pattern = Text1.Text
' Атрибут (ы)
.ReadOnly = (Check1.Value = vbChecked)
.Archive = (Check2.Value = vbChecked)
.Normal = (Check3.Value = vbChecked)
.Hidden = (Check4.Value = vbChecked)
.System = (Check5.Value = vbChecked)
'Количество отображаемых файлов
lblvalue.Caption = .ListCount
End With
End Sub
Private Sub Dir1_Change()
'Изменение текущего каталога
File1.Path = Dir1.Path
ChDir Dir1.Path
lblvalue.Caption = File1.ListCount
End Sub
Private Sub Dir1_KeyPress(KeyAscii As Integer)
'Нажата -ли клавиша Enter для выбора каталога
If KeyAscii = 13 Then
With Dir1
If .Path <> .List(.ListIndex) Then
.Path = .List(.ListIndex)
End If
End With
End If
End Sub
Private Sub Drive1_change()
' Изменение текущего диска
Dim vntMessage
On Error GoTo ErrorLabel
Dir1.Path = Drive1.Drive
ChDrive Drive1.Drive
Exit Sub
' Если устройство не готово, то выводится сообщение
ErrorLabel:
vntMessage = "Диск " + UCase(Drive1.Drive) + Chr(13) + Chr(10)
vntMessage = vntMessage + "отсутствует."
vntMessage = MsgBox(vntMessage, vbOKOnly + vbExclamation, "Ошибка")
Drive1.Drive = Dir1.Path
End Sub
Private Sub Form_Load()
' Установка текущего каталога
Drive1.Drive = "C:\"
' Количеатво отображаемых файлов
lblvalue.Caption = File1.ListCount
End Sub
Приложение 5
Приложение «Свойство дисков»
Формулировка задачи. В качестве иллюстрации возможности работы с дисками при помощи объекта Drive будет рассмотрено приложение «Свойства дисков», отображающее на форме некоторые свойства выбранного диска (см. рис. 15).
Решение. Для реализации данного приложения будут использованы следующие объекты:
DrvList – для отображения списка всех дисков;
LblInfo – для отображения свойств выбранного диска.
На стадии разработки свойство Caption элемента LblInfo будет равно пустой строке, а в дальнейшем будет заполняться в зависимости от того, какой диск был выбран пользователем.
Код приложения «Свойства дисков»
Private DrvName
Option Explicit
Private Sub drvList_Change()
Dim vntMessage
On Error GoTo ErrorLabel
'Отображение свойства выбранного диска
DriveInfo
DrvName = drvlist.Drive
Exit Sub
' Сообщение об отсутствии диска
ErrorLabel:
vntMessage = "Диск" + " " + UCase(drvlist.Drive) + " " + Chr(13) + Chr(10)
vntMessage = vntMessage + "отсутсвует."
vntMessage = MsgBox(vntMessage, vbOKOnly + " " + vbExclamation, "Ошибка")
drvlist.Drive = DrvName
End Sub
Private Sub Form_Load()
' Установка первого отображаемого диска
drvlist.Drive = "c:\"
DrvName = drvlist.Drive
Call DriveInfo
End Sub
Private Sub DriveInfo()
' Объявление переменной типа объект FileSystemObject
Dim fso As New FileSystemObject
'Объявление переменной для работы с дисками
Dim drv As Drive
Dim strInfo, drvType
' Получение доступа к выбранному диску
Set drv = fso.GetDrive(fso.GetDriveName(drvlist.Drive))
' Работа со свойствами объекта класса Drive
With drv
strInfo = "Метка тома:" & .VolumeName & vbCrLf & vbCrLf
strInfo = strInfo & "Серийный номер:" & .SerialNumber & vbCrLf & vbCrLf
drvType = .DriveType
' Определение типа диска
Select Case drvType
Case 0: drvType = "неизвестный"
Case 1: drvType = "сменный"
Case 2: drvType = "жёсткий"
Case 3: drvType = "сетевой"
Case 4: drvType = "CD-Rom"
Case 5: drvType = "Ram"
End Select
strInfo = strInfo & " Тип:" & drvType _
& vbCrLf & vbCrLf
strInfo = strInfo & "Файловая система:" _
& .FileSystem & vbCrLf & vbCrLf
strInfo = strInfo & "Свободно:" _
& .FreeSpace & "байт" & vbCrLf & vbCrLf
strInfo = strInfo & "Ёмкость: " _
& .TotalSize & "байт"
End With
' Отображение свойств выбранного диска
lblinfo.Caption = strInfo
End Sub
Приложение 6
Приложение «Свойства папок и файлов»
Формулировка задачи. Для того чтобы показать возможности обработки каталогов и файлов при помощи объектов Folder и File, будет рассмотрено приложение "Свойства папок и файлов", которое отображает на форме свойства выбранного каталога и файла (см. рис. 16).
Решение. Для реализации данной задачи будут использованы следующие объекты:
Dir1 - для отображения списка каталогов;
File1- для отображения списка файлов, находящихся в выбранном каталоге;
lblFile - значения свойств выбранного файла;
lblFolder - значения свойств выбранной папки.
Программный код. Приложение "Свойства папок и файлов"
Option Explicit
Private fldInfo
Private FiIInfo
Private Sub Dir1_click()
' Отображение свойств выбранной папки
Call DirInfo
File1.Path = Dir1.Path
ChDir Dir1.Path
End Sub
Private Sub DirInfo()
Dim fso As New FileSystemObject
Dim fld As Folder
On Error GoTo ErrorLabel
Set fld = fso.GetFolder(Dir1.Path)
With fld
If Not (.IsRootFolder) Then
fldInfo = "Название: " & .Name _
& vbCrLf & vbCrLf
fldInfo = fldInfo & "Тип: " & .Type _
& vbCrLf & vbCrLf
fldInfo = fldInfo & "Путь: " _
& .Path & vbCrLf & vbCrLf
fldInfo = fldInfo & "Размер: " _
& .Size & " байт" _
& vbCrLf & vbCrLf
fldInfo = fldInfo & "Содержит:" _
& vbCrLf
fldInfo = fldInfo & " файпов: " _
& .Files.Count & vbCrLf
fldInfo = fldInfo & " папок: " _
& .SubFolders.Count & vbCrLf _
& vbCrLf
fldInfo = fldInfo & "Изненен: " _
& .DateLastModified & vbCrLf _
& vbCrLf
lblfolder.Caption = fldInfo
Else
lblfolder.Caption = ""
End If
lblfile.Caption = ""
End With
Exit Sub
ErrorLabel:
MsgBox "Некоторые свойства недоступны"
End Sub
Private Sub FileInfo()
Dim fso As New FileSystemObject
Dim fil As File
Set fil = fso.GetFile(File1.FileName)
With fil
FiIInfo = "Название: " & .Name _
& vbCrLf & vbCrLf
FiIInfo = FiIInfo & "Тип: " & .Type _
& vbCrLf & vbCrLf
FiIInfo = FiIInfo & "Путь: " & .Path _
& vbCrLf & vbCrLf
FiIInfo = FiIInfo & "Размер: " & .Size _
& " байт" & vbCrLf & vbCrLf
lblfile.Caption = FiIInfo
End With
End Sub
Private Sub File1_Click()
' Отображенне свойств :выбранного файла
Call FileInfo
End Sub
Private Sub Form_Load()
Dir1.Path = "C:\"
End Sub
Приложение 7
Работа с объектами Folder, File и TextStream
в приложении, реализующем действия с
файлами и папками
Формулировка
задачи.
Для
иллюстрации
работы
с текстовым файлом
при
помощи
объекта
TextStream
будет
рассмотрена
следующая задача.
Пусть в корневом каталоге требуетея
создать
каталоги Dir1
и
Diг2.
После
этого непбходимо
в
каталогах
Dir1 создать текстовый
файл
a.txt и
записать в негo
информацию произвольного содержания.
Затем нужно
переместить данный
файл
в
каталог Dir2,
после
этого
скопировать
его снова в каталог Dir1.
Завершающим
действием должно
быть
удаление созданных каталогов (см. рис.
17).
Решение. В программе понадобятся следующие переменные:
fso As New FileSystemObject -объект модели FSO;
fld1, fld2 As Folder - переменные для работы с папками;
fil1, fil2 As File - переменные для работы с файлами;
txt As TextStream - переменная для обработки текстового потока;
strText As String - строковая переменная для передачи
информации из одного текстового файла в другой.
Программный код. Работа с объектами Folder, File и TextStream в приложении, реализующем действия с файлами и папками
Option Explicit
Dim fld1 As Folder
Dim fld2 As Folder
Private Sub Form_Load()
Dim fso As New FileSystemObject
Dim fil1 As File
Dim fil2 As File
Dim txt As TextStream
Dim strText As String
' Создание каталогов с:\dir1 и с:\dir2
Set fld1 = fso.CreateFolder("C:\dir1")
Set fld2 = fso.CreateFolder("C:\dir2")
'Создание файлов
'с:\dir1\a.txt и с:\dir2\b.txt
fso.CreateTextFile ("C:\dir1\a.txt")
fso.CreateTextFile ("C:\dir2\b.txt")
' Получение доступа к созданным файлам
Set fil1 = fso.GetFile("C:\dir1\a.txt")
Set fil2 = fso.GetFile("C:\dir2\b.txt")
'Открытие текстового потока для записи в файл c:\dir1\a.txt
Set txt = fil1.OpenAsTextStream(ForWriting)
txt.Write ("Информация произвольного типа")
txt.Close
'Открытие текстового потока для чтения из файла с:\dir1\a.txt
Set txt = fil1.OpenAsTextStream(ForReading)
strText = txt.ReadAll
txt.Close
'Открытие текстового потока для записи в файл с:\dir2\b.txt
Set txt = fil2.OpenAsTextStream(ForWriting)
txt.Write (strText)
txt.Close
'Копирование: с:\dir1\a.txt -> c:ldir2\a1.txt
fil1.Copy (fld2.Path & "\" & "а1.txt")
'Перемещение: с:\dir2\b.txt -> с:\dir2\b1.txt
fil2.Move (fld1.Path & "\" & "b1.txt")
End Sub
Private Sub Command1_Click()
'Удаление каталогов
fld1.Delete
fld2.Delete
End Sub
Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub