98679

Работа с файлами в Visual Basic 6

Реферат

Информатика, кибернетика и программирование

При этом данные могут быть с разделителями или без разделителей то есть содержание файла может иметь некую структуру. Структурной единицей содержимого в подобных файлах как правило является строка. К таким файлам можно отнести выполняемые программы файлы динамических библиотек файлы документов Word.

Русский

2015-11-05

230.5 KB

14 чел.

Работа с файлами в Visual Basic 6

В Visual Basic 6 существует понятие типа файла, который определяется организационной структурой хранения информации в файле и способом доступа к этой информации. Принято выделять следующие типы файлов.

Файлы последовательного доступа. Как правило, это текстовые файлы или аналогичные им. Такие файлы представляют собой последовательность символов. При этом данные могут быть с разделителями или без разделителей, то есть содержание файла может иметь некую структуру. Структурной единицей содержимого в подобных файлах, как правило, является строка. Примерами этих файлов могут служить текстовые файлы и файлы инициализации программ.

Файлы произвольного доступа. Это структурированные файлы, которые содержат информацию в виде записей. Примером могут служить файлы баз данных.

Двоичные (бинарные) файлы. Файлы с побайтным доступом. В принципе, это те же файлы с последовательным доступом, но информация в них не организована в строки. Особенность данных файлов – работа с байтами или блоками байтов. К таким файлам можно отнести выполняемые программы, файлы динамических библиотек, файлы документов Word.

Подобное деление файлов на типы достаточно условно и определяется особенностями организации файлов и доступа к данным в них. Например, файл с последовательным доступом можно открыть и в режиме двоичного доступа. Если этот файл имеет разделители, то для работы с ним придется написать специальную процедуру обработки разделителей и разбора данных, так как двоичный доступ обеспечивает побайтную запись/чтение из файла. Очевидно, что это неудобно. Именно поэтому и введено условное деление файлов на типы в зависимости от формата файла и доступа к данным. Соответственно сгруппированы и функции Visual Basic для записи/чтения данных. Рассмотрим работу с каждым из типов файлов, понимая, что такое разделение на типы достаточно условно, но позволяет обеспечить наиболее эффективную обработку данных для каждого типа.

Тип файла задает оптимальный набор функций записи и чтения данных из файла. Поэтому при работе с файлами для написания эффективной программы всегда необходимо иметь представление о типах файлов, с которыми будет работать программа, и об организации хранения данных в этих файлах. Это дает возможность обеспечить оптимальный доступ и использовать соответствующие этому доступу функции.

Традиционный подход при работе с файлами

Функции и операторы, используемые при работе с файлами, приведены в табл. 1. В столбце Тип файла этой таблицы приняты следующие сокращения типов файлов:

П – файл последовательного доступа;

Пр – файл произвольного доступа;

Б – бинарный файл.

Таблица 1 Функции и операторы для работы с файлами

Функция, оператор

Описание

Тип файла

Open

Открывает файл

П, Пр. Б

Close

Закрывает все файлы

П, Пр. Б

Close #

Закрывает файл по идентификатору (дескриптору)

П, Пр. Б

Reset

Закрывает все открытые файлы, записывает содержимое буферов

П, Пр. Б

Print #

Записывает данные в файл

П

FileCopy

Копирует файл

П, Пр. Б

EOF

Определяет метку конца файла

П, Пр. Б

FileAttr

Возвращает режим доступа открытого файла

П, Пр. Б

FileDateTime

Возвращает дату и время создания файла

П, Пр. Б

FileLen

Возвращает размер файла в байтах

П, Пр. Б

FreeFile

Возвращает номер свободного идентификатора файла (дескриптора)

П, Пр, Б

GetAttr

Получает атрибуты файла

П, Пр, Б

SetAttr

Устанавливает атрибуты файла

П, Пр, Б

Loc

Возвращает номер текущей позиции в файле

Пр, Б

LOF

Возвращает размер открытого файла в байтах

П, Пр, Б

Seek 

Устанавливает на заданную номером позицию или запись в файле 

П, Пр, Б 

Dir 

Возвращает содержимое текущей папки 

П, Пр, Б 

Kill 

Удаляет файл 

П, Пр, Б 

Lock 

Блокирует файл при работе в многопользовательской среде

П, Пр, Б 

Unlock 

Снимает блокировку файла в многопользовательской среде

П, Пр, Б 

Name 

Задает (переименовывает) имя файла 

П, Пр, Б 

Get # 

Читает данные из файла 

Пр, Б 

Input 

Читает данные из файла 

П, Б 

Input # 

Читает данные из файла 

П 

Line Input # 

Читает строку из файла 

П 

Put # 

Записывает данные в файл 

Пр, Б 

Write # 

Записывает данные в файл 

П 

Таблица 2. Функции и операторы для работы с файлами по группам

Выполняемое действие

Функции, операторы

Открыть или создать файл

Open

Закрыть файл

Close, Reset

Определение параметров вывода данных

Format, Spc, Tab, Width #

Скопировать файл

FileCopy

Получить информацию о файле

EOF, FileAttr, FileDateTime, FileLen, FreeFile, GetAttr, Loc, LOF

Организовать управление файлами

Dir, Kill, Lock, Unlock, Name

Прочитать данные из файла

Get #, Input, Input I, Line Input #

Получить информацию о размере файла

FileLen

Установить атрибуты файла

SetAttr

Найти позиции в файле

Seek

Записать данные в файл

Print #, Put #, Write #

Открытие файлов

Перед тем как записать данные в файл или прочитать данные из файла, необходимо сначала открыть этот файл. Открытие файла выполняется оператором Open:

Open pathName For mode [access] [lock] As [#]fileNumber [Len=recLength]

где:

pathname – полное имя файла;

mode – режим доступа к файлу. Может принимать следующие значения: Append, Binary, Input, Output или Random;

access – тип доступа к файлу. Определяет характер действий с файлом – чтение или запись данных. Может принимать значения: Read (Чтение), Write (Запись) или Read/Write (Чтение/Запись);

lock – тип разрешения доступа к файлу другим процессам. Определяет возможность одновременной работы с файлом нескольких приложений или нескольких пользователей. Может принимать значения: Shared (Общий), Lock Read (Блокировка чтения), Lock Write (Блокировка записи) или Lock Read Write (Блокировка чтения и записи);

fileNumber – целочисленное выражение, задающее идентификатор файла (дескриптор). Может иметь значение от 1 до 511 включительно;

recLength – число, определяющее размер буфера данных для записи/чтения в файлах прямого доступа. Для файлов произвольного доступа это число задает длину одной записи файла. Может иметь значение до 32,767 (байтов).

При работе оператора Open создается специальный счетчик номеров (идентификаторов) открытых файлов (в операторе это параметр fileNumber) для однозначного определения файла, с которым программа работает в текущий момент.

Если указанный в операторе Open файл не найден по заданному пути или не существует, он будет создан этим оператором для режимов доступа Append, Binary, Output или Random. Для режима доступа Input новый файл не создается.

Важной особенностью режимов доступа является возможность многократного открытия файла для режимов Binary, Input и Random, то есть файл можно открыть несколько раз с разными номерами. Но для режимов доступа Output и Append, – используемых для записи данных, это недопустимо.

Если номер открываемого файла специально не контролируется и не задается программой, его можно узнать с помощью функции FreeFile, возвращающей последний свободный номер открываемого файла.

При использовании оператора Open необходимо, чтобы режим доступа соответствовал типу открываемого файла.

Закрытие файлов

Закрытие файлов выполняется оператором Close, имеющий следующий синтаксис:

Close [fileNumberLlist]

где fileNumberLlist — список закрываемых файлов, представленных номерами фалов и перечисляемых через запятую: [#fileNumber] [,#fileNumber]

. . . [,#fileNumber].  При этом номер файла аналогичен номеру файла в функции Open.Предупреждение

Если список файлов не указан, оператор Close закрывает все открытые файлы.

Работа с файлами последовательного доступа

Файлы последовательного доступа – это, как правило, текстовые файлы, то есть последовательности ASCII–символов, организованные в строки. При открытии файлов последовательного доступа возможны три режима доступа:

Input – открыт для последовательного чтения данных;

Output – открыт для последовательной записи данных, при этом информация записывается всегда с начала файла (предыдущая затирается, если в файле уже что-то записано);

Append — открыт для добавления данных к уже имеющимся в файле.

Чтение данных

Чтение данных из файла последовательного доступа выполняется с помощью функции Input и операторов Input # и Line Input #.

Функция Input имеет следующий синтаксис:

Input(number, #fileNumber)

где:

Number – целое число, которое задает количество считываемых из файла символов;

fileNumber – номер файла, аналогичный номеру файла в операторе Open.

Функция Input считывает из файла заданное количество символов и обычно используется для чтения данных, записанных в файл оператором Print #.

Следует иметь в виду, что функция Input требует знания количества считываемых символов. Поэтому для чтения данных из файла необходимо предварительно вычислить его длину с помощью функции FileLen.

Если в программе требуется прочитать данные из файла, в котором информация в строках имеет структуру с разделителями (в качестве разделителей используются запятые), необходимо применить оператор

Input #:

Input #fileNumber, varlist

где:

filenumber – номер файла, аналогичный номеру файла в операторе Open;

Varlist – список переменных.

При работе этого оператора сначала считывается целая строка, а затем подстроки, отделенные разделителями (запятыми), помещаются в соответствующие переменные списка. Для корректной работы оператора строки файла должны иметь заданную структуру с разделителями. Обычно этот оператор используется в паре с оператором записи Write #.

Для чтения всего содержимого файла при помощи оператора Input # необходимо организовать циклическое считывание данных из файла, поскольку данные считываются этим оператором по строкам.

Для построчного чтения данных из последовательного файла применяется оператор Line Input #. Синтаксис этого оператора следующий:

Line Input #fileNumber, varName

где:

fileNumber – номер файла, аналогичный номеру файла в операторе Open;

varName – имя переменной.

Оператор Line Input # посимвольно считывает, всю строку данных из файла и помещает ее в строковую переменную. При этом разделителем строк в файле служит стандартный разделитель строк символ возврата каретки CHR(13) или последовательность символов возврата каретки и перевода строки CHR(13) + CHR(10), причем в переменную varName эти разделители не вставляются. Обычно оператор Line Input # используется в паре с оператором Print #.

Для того чтобы прочитать все данные из файла при помощи оператора Line Input #, необходимо организовать цикл чтения данных.

Пример

1. Создайте новый стандартный проект.

2. Присвойте проекту имя MyFileProject.

3. Для выбора файлов потребуются диалоговые окна открытия и сохранения файлов, поэтому подключите к проекту библиотеку Microsoft Common Dialog Control 6.

4. Переименуйте форму проекта, присвоив ей название FormForFile.

5. В свойство Caption формы введите заголовок Работаем с файлами.

6. Добавьте в форму элемент управления TextBox для ввода/вывода данных и присвойте ему имя txtFile. Придайте текстовому полю достаточно большие размеры, чтобы оно занимало практически все пространство формы. Установите свойство поля MultiLine в значение True.

7. Добавьте на форму элемент управления CommonDialog, присвойте созданному объекту имя cdCommonDialog.

8. Для фильтрации файлов в свойство Filter объекта cdCommonDialog введите следующий текст: Все файлы (*. *)\*.*\ Текстовые файлы (*.txt)\ *. txt\.

9. Добавьте на форму FormForFile элемент управления CommandButton,

10. Присвойте свойствам этого объекта значения: Namecbstart и CaptionВыполнить. Созданная в форме кнопка cbstart будет служить для выполнения действий по событию кнопки Click.

Созданное тестовое приложение показано на рис. 1.

Рис. 1

Запрограммируем приложение на чтение данных из файла последовательного доступа. Для этого откроем окно редактора кода и введем следующий код:

Dim strFileName As String

Dim strFileContent As String

Dim nFreeFile As Integer

Dim nFileLenght As Integer

Private Sub cbStart_Click()

cdCommonDialog.ShowOpen

strFileName = cdCommonDialog.FileName

nFreeFile = FreeFile

If strFileName <> "" Then

Open strFileName For Input As nFreeFile

nFileLenght = FileLen(strFileName)

strFileContent = Input(nFileLenght, #nFreeFile)

txtFile.Text = strFileContent Close

End If

End Sub

В данном случае при нажатии кнопки Выполнить открывается диалоговое окно поиска файла. Путь и имя файла, возвращаемое диалоговым окном, хранятся в переменной strFileName. Найденный файл (он должен быть текстовым) открывается при помощи оператора Open для чтения данных. Функция Input считывает сразу весь файл в переменную strFileContent, содержимое которой затем помещается в текстовое поле txtFile. После выполнения всех действий файл закрывается оператором Close.

Чтобы прочитать данные при помощи оператора Line Input #, необходимо заменить текст кода, расположенный сразу после оператора Open, на следующий:

Do While Not EOF(nFreeFile)

Line Input #nFreeFile, strFileContent

txtFile.Text = txtFile.Text + strFileContent +Chr$(13) + Chr$ (10)

Loop

Close

В этом цикле данные из файла построчно считываются в переменную strFileContent и помещаются в текстовое поле txtFile. Цикл работает до достижения конца файла, который контролируется функцией eof. Применение цикла не требует знания длины файла, что иногда предпочтительнее.

Для изучения работы оператора Input # добавьте в форму еще одно текстовое поле. Назовите его txtNumber и установите свойство поля DataFormat в значение Number. Текст в приложении после оператора Open необходимо заменить на следующий:

Dim nFileContent As Integer

Input #nFreeFile, strFileContent, nFileContent

txtFile.Text = StrFileContent

txtNumber.Text = nFileContent

Close

Рис. 2

Работающее приложение показано на рис. 2. При этом строки открываемого файла имеют структуру, аналогичную следующей строке:

Это файл для проверки функций, 100

то есть текст и число расположены через запятую.

Переход на заданную позицию в файле

Переход на заданную позицию в файле можно организовать с помощью оператора Seek, имеющего следующий синтаксис:

Seek #fileNumber, position

где:

fileNumber – номер файла, аналогичный номеру файла в операторе Open;

position – целочисленное выражение, задающее позицию указателя в файле. Позиционирование при этом выполняется посимвольно.

Оператор Seek устанавливает указатель на требуемую позицию. Если после этого использовать функции чтения или записи, то действие этих функций будет выполняться начиная с позиции указателя, найденного оператором Seek.

Можно в код приложения MyFileProject непосредственно перед функцией Input вставить выражение, задающее позиционирование:

Seek #nFreeFile, 77

nFileLenght = nFileLenght - 76

В этом случае данные из файла будут считаны начиная с 77 по счету символа от начала и до конца файла. При этом необходимо уменьшить число считываемых символов, поскольку считывается весь файл.

Запись данных

Данные в файл последовательного доступа записываются с помощью операторов Print # и Write #. Оператор Write # дополнительно автоматически вставляет в файл разделители, но не дает гибкости при управлении форматированием данных. Каждая из функций записи работает в паре с определенной функцией чтения. Для оператора Print # это функции Input или Line Input #, а для оператора Write # — это Input #.

Оператор Print #. Он имеет следующий синтаксис:

Print #fileNumber, [outputlist]

где:

fileNumber – номер файла, аналогичный номеру файла в операторе Open;

outputlist – список выражений или переменных для записи.

Оператор Write # имеет следующий синтаксис:

Write #fileNumber, [outputlist]

где:

fileNumber – номер файла, аналогичный номеру в операторе Open;

outputlist – список выражений или переменных для записи.

При выполнении записи данных в файл оператор Write # после каждой строки автоматически вставляет символ перевода каретки CHR(13) и символ новой строки CHR(10).

Заменим код в нашем приложении MyFileProject на следующий:

Dim strFileName As String

Dim strFileContent As String

Dim nFreeFile As Integer

Private Sub cbStart_Click()

nFreeFile = FreeFile

cdCommonDialog.ShowSave

strFileName = cdCommonDialog.FileName

If strFileName <> "" Then

Open strFileName For Output As nFreeFile

strFileContent = txtFile.Text

Print #nFreeFile, strFileContent

Close

End If

End Sub

В полученном приложении данные, введенные в текстовое поле, будут записываться оператором Print # в файл, найденный при помощи диалогового окна сохранения файлов.

Работа с файлами произвольного доступа

Файл с произвольным доступом обладает заранее заданной структурой и состоит из записей. Каждая запись в файле – это некоторая «порция» данных, которая имеет строго определенный размер и свой конкретный номер в файле. Доступ к данным в файле произвольного доступа осуществляется именно по номеру записи. Данные из файла такого типа читаются и записываются записями. Примерами файла произвольного доступа являются базы данных, всегда имеющие строго определенную структуру.

При открытии файлов произвольного доступа возможен только один режим доступа – Random. Кстати, этот режим является режимом по умолчанию для функции Open.

Создадим файл произвольного доступа пользовательской, то есть своей собственной структуры. С помощью оператора Tуре объявим тип переменной, имеющей заданную структуру записи:

Type PhisFace

PhisFaseID As Integer

FIO As String * 50

End Type

В данном примере объявлена структура в виде записи из двух полей. Первым полем является идентификатор, а вторым — фамилия, имя и отчество.

Замечание

Объявление пользовательского типа данных необходимо осуществлять в программном модуле.

Открытие файла произвольного доступа

Файл произвольного доступа открывается несколько иначе, чем файл последовательного доступа. Синтаксис оператора Open при этом выглядит следующим образом:

Open pathName [For Random] As fileNumber Len = recLength

где:

pathname — полное имя файла;

fileNumberномер файла;

recLength — длина записи в байтах.

При использовании оператора Open для открытия файла произвольного доступа атрибут For не обязателен, так как в Visual Basic 6 этот параметр устанавливается по умолчанию. В отличие от файла с последовательным доступом, при открытии файла с произвольным доступом необходимо обязательно указывать длину записи. При этом, если длина записи не известна, ее можно вычислить с использованием функции Len.

Чтение данных из файла произвольного доступа

Данные из файла произвольного доступа, как правило, считываются записями. Для этого используется оператор Get #, который имеет следующий синтаксис:

Get #fileNumber, [recNumber], varName

где:

fileNumberномер файла;

recNumber – номер записи в файле;

varName – переменная.

Если параметр recNumber в функции Get не указан, считывается текущая запись, на которой позиционирован указатель.

Для позиционирования указателя можно использовать функцию Seek. Синтаксис этого оператора такой же, как для файлов последовательного доступа, но имеет другой смысл. Если для последовательных файлов позиционирование выполняется по символам, то для файлов произвольного доступа – по номеру записи:

Seek #fileNumber, position

где:

fileNumber – номер файла;

position – целочисленное выражение, которое задает номер записи в файле.

Запись в файл произвольного доступа

Для записи данных в файл произвольного доступа используется оператор Put #, имеющий следующий синтаксис:

Put #fileNumber, [recNumber], varName

где:

fileNumber — номер файла, аналогичный номеру в операторе open;

recNumber — целочисленное выражение, которое задает номер записи в файле;

varName — переменная, указывающая источник записываемых данных.

Этот оператор используется только для файлов произвольного доступа и бинарных. Если номер записи не указан, то по умолчанию принимается текущая позиция указателя записи.

Рассмотрим пример. Воспользуемся приложением MyFileProject, изменив его следующим образом:

1. Измените наименование кнопки Выполнить на Запись.

2. Добавьте в форму еще одну кнопку управления

3. Присвойте свойству Name созданной кнопки значение cbRead,

4. В свойство Caption введите значение Чтение.

5. Добавьте в приложение программный модуль.

6. В код модуля введите текст описания пользовательского типа данных:

Type PhisFace

PhisFaseID As Integer

FIO As String * 50

End Type

7. Откройте окно редактора кода и замените находящийся там код на следующий:

Dim ForFileRecords As PhisFace

Dim nRecNo As Integer

Private Sub SaveRecord()

Open "Z:\FilePF.dat" For Random As #1 Len = Len(ForFileRecords)

ForFileRecords.PhisFaseID = txtNumber.Text

ForFileRecords. FIO = txtFile.Text

Put #1, nRecNo, ForFileRecords

nRecNo = nRecNo + 1

Close #1 

End Sub

Private Sub ReadRecord()

Open "Z:\FilePF.dat" For Random As #1 Len = Len (ForFileRecords)

Get #1, nRecNo, ForFileRecords

txtNumber . Text = ForFileRecords.PhisFaseID

txtFile.Text = ForFileRecords.FIO

nRecNo = nRecNo + 1

Close #1

End Sub

Private Sub Form_Load()

nRecNo = 1 

End Sub

Private Sub cbStart_Click()

Call SaveRecord

End Sub

Private Sub cbRead_Click()

Call ReadRecord

End Sub

В тексте этого кода мы объявили переменные ForFileRecords пользовательского типа для описания структуры файла и nRecNo в качестве счетчика записей. Открывая файл с доступом Random и указанием длины записи в соответствии с длиной переменной ForFileRecords, мы создаем файл требуемой структуры.

8. Запустите приложение. При нажатии кнопки Запись выполняется запись содержимого текстовых полей в файл созданной структуры. При нажатии кнопки Чтение эти данные можно прочитать в текстовом поле последовательно по записям, начиная с первой. При этом каждая кнопка вызывает собственную процедуру выполнения действия.

Изменение данных в файле произвольного доступа

Для изменения данных в записях файла (редактирование, добавление, удаление записей) применяется оператор Put #. При его использовании необходимо иметь в виду, что данные в записи будут заменены на те, которые мы передаем в файл. Подчеркнем, что новая запись с данными не создается.

Для добавления записей в файл необходимо указывать номер записи на единицу больший номера последней записи. В этом случае запись будет добавлена в файл, а не изменена. Например:

Put #FileNum, LastRecord + 1, ForFileRecords

Для вычисления текущего номера последней записи LastRecord можно использовать длину записи и размер файла, возвращаемый функцией lof.

Перейдем к описанию процесса удаления данных из файла произвольного доступа. Существуют два способа. Можно просто очистить соответствующие поля указанных записей, то есть записать в них пустые значения. Однако в этом случае в файле остаются пустые записи. Понятно, что при таком подходе ресурсы (дисковое пространство) используются нерационально.

Для окончательного удаления записей рекомендуется перезаписывать данные в новый файл, пропуская пустые записи. Алгоритм этих действий таков:

1. Создайте новый файл с помощью оператора Open.

2. Перепишите все непустые записи в новый файл, используя оператор Put #.

3. Закройте исходный файл и удалите его при помощи оператора Kill.

4. Переименуйте новый файл в исходный оператором Name.

Получаем тот же самый файл, но уже без пустых записей. При этом экономится пространство диска и время поиска данных в таком файле.

Работа с двоичными файлами

Двоичный файл отличается от файлов последовательного и произвольного доступа. Двоичный файл не организован в строки, как файл последовательного доступа. Здесь нельзя выделить строки, записи или иную информационную структуру кроме байтов или блоков байтов.

Двоичный файл открывается только в двух режимах:

Binary – двоичный доступ по номеру байта;

Random  произвольный доступ.

Для режима доступа Random к двоичным файлам, в отличие от файлов произвольного доступа, запись не имеет строго заданного размера и обычно вычисляется по соответствующему алгоритму или хранится в записях файла.

Работа с двоичными файлами отличается большей свободой выполнения различных действий, чем с файлами последовательного доступа. В отличие от файлов последовательного доступа, двоичный файл открывается сразу и для чтения, и для записи.

Открытие двоичного файла

Двоичный файл открывается по-другому, чем файл последовательного доступа. Синтаксис оператора Open для двоичного файла выглядит следующим образом:

Open pathName For Binary As fileNumber

где:

pathName – полное имя файла;

fileNumberномер файла.

Чтение данных из двоичных файлов

Чтение данных из двоичных файлов выполняется с помощью оператора Get #, имеющего следующий синтаксис:

Get #fileNumber, [recNumber], varName

где:

fileNumberномер файла;

recNumber – размер записи в байтах;

varName – переменная, в которую читаются данные из файла.

Запись данных в двоичные файлы

Для записи данных в двоичные файлы используется оператор Put #, имеющий следующий синтаксис:

Put [#]fileNumber, [recNumber], varName

где:

fileNumberномер файла;

recNumber – размер записи в байтах;

varName – переменная, в которой хранятся данные, записываемые в файл.

Позиционирование в двоичном файле выполняется так же, как в файле последовательного доступа.

Замечание

Оператор Put # работает в паре с оператором Get #.

Работа с атрибутами файлов

Для работы с атрибутами файлов используются функции GetAttr и SetAttr. Синтаксис функции GetAttr, возвращающей атрибуты файлов, следующий:

GetAttr (pathName)

где pathName – путь, включающий имя файла, папку, устройство. По умолчанию применяется текущая папка и устройство.

Функция GetAttr возвращает число, которое определяет атрибуты файла. Интерпретировать это число можно при помощи параметров, описанных в табл. 3.

Таблица 3. Константы атрибутов файлов

Константа

Описание

Значение 

vbNormal 

Обычный файл 

0 

vbReadOnly 

Файл только для чтения 

1 

vbHidden 

Скрытый файл 

2 

vbSystem 

Системный файл 

4 

vbDirectory 

Каталог (папка) 

16 

vbArhive 

Архивный файл 

32 

Аналогично работает функция SetAttr, выполняющая установку атрибутов файлов. Синтаксис этой функции следующий:

SetAttr pathName, attributes

где:

pathName – путь, включающий имя файла, папку, устройство. По умолчанию используется текущая папка и устройство;

attributes – число или выражение, задающее сумму атрибутов.

Замечание

В функции SetAttr используются все константы, описанные в табл. 3, кроме константы vbDirectory.

Для того чтобы задать несколько атрибутов, можно просто просуммировать указанные константы. Например, для установки атрибутов файла Hidden и Read-only необходимо использовать функцию SetAttr следующего вида:

SetAttr "MyFile",   vbHidden + vbReadOnly

При этом для файла MyFile будут установлены атрибуты Hidden и Read-only.

Работа с папками и устройствами

Файл находится на самом нижнем уровне хранения информации в файловой системе компьютера. Выше в иерархии файловой системы расположены папки и устройства. Под устройством понимается не только жесткий диск, но и, например, устройство для чтения CD-ROM.

Для операций с папками и устройствами в Visual Basic существует набор функций и операторов (табл. 4), которые позволяют создавать и удалять папки, переименовывать их, раскрывать их содержимое.

Таблица 4. Функции и операторы для работы с папками и устройствами

Функция, оператор

Выполняемое действие

ChDir

Изменяет текущую папку

ChDrive

Изменяет текущее устройство

MkDir

Создает папку

RmDir

Удаляет папку

Name

Присваивает папке имя или переименовывает папку

CurDir

Возвращает текущий каталог

Dir

Возвращает список файлов папки

Остановимся на функции Dir. С помощью этой функции можно получить список файлов указанной папки. При этом можно применять шаблон имени файла, используя типовые обозначения "*" — множественная подмена, "?" – подмена одного символа.

Функция Dir имеет следующий синтаксис:

Dir(pathName [, attributes])

где:

pathName – путь, включающий имя файла, папку, устройство. По умолчанию применяется текущая папка и устройство. Для обозначения имени можно применить шаблон по аналогии с DOS. Если файл не найден, то возвращается пустая строка;

attributesатрибуты файлов. Имеют значения, указанные в табл. 5. Если атрибуты не назначены, то по умолчанию возвращаются файлы без атрибутов.

Указывая атрибуты для функции Dir, мы назначаем фильтр для списка выводимых файлов. Для того чтобы назначить одновременно несколько атрибутов, их можно просто арифметически сложить.

Указывая конкретное значение файла, функцию Dir можно использовать для подтверждения существования указанного файла на диске. Если указанный файл не существует, то возвращается пустая строка.

Таблица 5. Константы атрибутов файлов функции

Константа 

Значение 

Описание 

vbNormal 

0 

Задает файлы без атрибутов 

vbReadOnly 

1 

Задает файлы только для чтения 

vbHidden 

2 

Задает скрытые файлы 

vbSystem 

4 

Задает системные файлы 

vbVolume 

8 

Задает метку тома 

vbDirectory 

16 

Задает папку (каталог) 

Для создания папки применяется оператор MkDir, синтаксис которого выглядит следующим образом:

MkDir path

где path – путь, включающий имя файла, папку, устройство. По умолчанию используется текущая папка и устройство.

Если параметр path не содержит имя устройства, папка будет создана на текущем устройстве.

Для удаления папок используется оператор RmDir, имеющий следующий синтаксис:

RmDir path

где path – путь, включающий имя файла, папку, устройство. По умолчанию используется текущая папка и устройство.

При использовании оператора RmDir необходимо иметь в виду, что если удаляемая папка содержит файлы, будет выдаваться системное сообщение об ошибке. Чтобы избежать этого, рекомендуется сначала удалить все файлы из папки с помощью оператора Kill и лишь затем удалить указанную папку.

Для выбора другого устройства используется оператор ChDrive, имеющий следующий синтаксис:

ChDrive drive

где drive – строковое выражение, назначающее новое устройство.

Параметром этой функции является буквенное обозначение устройства вашей системы. При использовании этой функции необходимо иметь в виду, что устройство должно существовать и быть доступным.


 

А также другие работы, которые могут Вас заинтересовать

36635. Количество информации, как мера уменьшения неопределенности знаний 37.5 KB
  Тип урока: комбинированный Цели: Обучающая дать определение единицы измерения информации; развивающая – развивать интерес к изучаемой теме логическое мышление; воспитывающая – воспитывать у ребят дисциплинированность и внимательность на уроке. Тема нашего сегодняшнего занятия Количество информации как мера уменьшения неопределенности знаний. Процесс познания окружающего мира приводит к накоплению информации в форме знаний.
36636. Інструкція з безпеки праці 46.5 KB
  Тому дайте будьласка відповіді на такі питання: Назвіть основні положення кодексу законів про працю Назвіть основний закон що гарантує право громадян на безпечні та нешкідливі умови праці Що зобов’язаний роботодавець забезпечити Які створює держава умови Які Ви знаєте законодавчі акти з охорони праці Активізація нового матеріалу: А темою уроку є €œІнструкція з безпеки праці€. На уроках €œВиробничого навчання€ ми застосовуємо безпосередньо отриманні знання з охорони праці адже уявлення безпеки праці і виховування вміння до...
36637. Економічна інформатика 1.16 MB
  Інформаційні технології - технологічні процеси, що охоплюють інформаційну діяльність управлінських працівників, повязану з підготовкою і прийняттям управлінських рішень. Являють собою сукупність методів і прийомів розвязання типових задач обробки даних. Включають збір, зберігання, передачу, обробку інформації.
36638. Предмет і задачі вірусології 484.5 KB
  Історія вірусології досить незвичайна. Перша вакцина для попередження вірусної інфекції — віспи була запропонована англійським лікарем Є. Дженнером в 1796 г., майже за сто років до відкриття вірусів, друга вакцина — антирабічна була запропонована засновником мікробіології Л. Пастером в 1885 г.— за сім років до відкриття вірусів.
36639. Охорона праці в галузі загальні Міжнародна економіка 475.5 KB
  Охорона праці в галузі загальні вимоги Конспект лекцій для напряму підготовки 6. МІЖНАРОДНІ НОРМИ І ЗАКОНОДАВСТВО УКРАЇНИ В ГАЛУЗІ ОХОРОНИ ПРАЦІ Лекції № 1 1. Стан безпеки праці в світі 2. Європейський Союз і законодавство з охорони праці 6.
36640. СТАНДАРТИЗАЦІЯ ТА СЕРТИФІКАЦІЯ ТОВАРІВ І ПОСЛУГ 171.1 KB
  Тому проблема забезпечення і підвищення якості продукції актуальна для всіх країн і підприємств. При цьому необхідно врахувати те що підвищення якості продукції задача довгострокова і безперервна. Рівень якості продукції не може бути постійною величиною. Тому вирішувати її традиційними методами тобто лише шляхом контролю якості готової продукції практично не можливо.
36641. Економічна теорія 1.56 MB
  Попри певну обмеженість вчення досягненням фізіократів було те що вони вперше походження багатства повязали не зі сферою обміну а зі сферою виробництва. Найважливішим внеском класичної політекономії в економічну науку вважається остаточне перенесення аналізу зі сфери обігу до сфери виробництва. Маркс доводив неспроможність капіталізму та сформулював його основну суперечність що існує між суспільним характером виробництва та приватною формою привласнення доходів. відома як Велика депресія виявила що вільна некерована економіка не...
36642. Вироби на основі будівельного вапна 265.5 KB
  Вимоги ДСТУ на випуск силікатної цегли. Технологічна схема виробництва силікатної цегли. Переваги силікатної цегли Екологічність Силікатна цегла виготовлений з екологічно чистої натуральної сировини вапна і піску за технологією знайомої людству кілька десятиліть. Вартість силікатної цегли нижче ніж у його керамічних аналогів За техніко економічними показниками він значно перевершує глиняна цегла.
36643. Процесуальне право 1022 KB
  Цивільне процесуальне право як галузь права – це сукупність правових норм що регулюють діяльність суду загальної юрисдикції осіб які беруть участь у справі та інших учасників цивільного процесу щодо здійснення правосуддя у цивільноправових спорах щодо справ наказного окремого провадження а також такі що виникають у зв’язку із цією діяльністю суспільні відносини щодо розгляду та вирішення зазначених категорій справ. Цивільний процес – це сукупність процесуальних дій суду інших осіб які беруть участь у справі а також інших...