Работа с файлами в VBScript
Имеются две основных категории операций с файлами:
- Создание, добавление или удаление данных и чтение файлов
- Перемещение, копирование и удаление файлов
Создание файлов
Есть три способа создания пустого текстового файла (иногда называемого как «text stream»).
Первый способ — это использование метода CreateTextFile.
В следующем примере показано, как создать текстовый файл, используя этот метод:
Dim fso, f1
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.CreateTextFile("c:\testfile.txt", True)
Пример использования данного метода см. в разделе «3.7. Пример работы с объектом FileSystemObject».
Второй способ — это использование метода OpenTextFile объекта
FileSystemObject с набором флагов ForWriting.
В следующем примере показано, как создать текстовый файл, используя этот метод:
Dim fso, ts
Const ForWriting = 2
Set fso = CreateObject("Scripting. FileSystemObject")
Set ts = fso.OpenTextFile("c:\test.txt", ForWriting, True)
Третий способ — это использование метода
OpenAsTextStream
с набором флагов
ForWriting. В следующем примере показано, как создать текстовый файл, используя этот метод:
Dim fso, f1, ts
Const ForWriting = 2
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateTextFile ("c:\test1.txt")
Set f1 = fso.GetFile("c:\test1.txt")
Set ts = f1.OpenAsTextStream(ForWriting, True)
Добавление данных в файл
Однажды создав текстовый файл, вы можете добавлять в него данные, для чего нужно выполнить три действия:
- Открыть текстовый файл
- Записать данные
- Закрыть файл
Для открытия существующего файла используйте метод
OpenTextFile объекта
FileSystemObject или метод
OpenAsTextStream объекта
File.
Для записи данных в текстовый файл используйте методы Write,
WriteLine или WriteBlankLines объекта TextStream,
в зависимости от задач, описанных в приведённой ниже таблице:
Задача |
Метод |
Запись данных в текстовый файл без символа перехода на новую строку в конце |
Write |
Запись данных в текстовый файл с символом перехода на новую строку в конце |
WriteLine |
Запись одной или более пустых строк в открытый текстовый файл |
WriteBlankLines |
Для закрытия текстового файла используйте метод Close объекта TextStream.
Закрыть файл можно также методом Close объекта FileSystemObject.
Пример использования данных методов см. в разделе «3.7. Пример работы с объектом FileSystemObject».
ПРИМЕЧАНИЕ
Символ новой строки содержит символ или символы (зависит от операционной системы)
для перевода курсора в начало новой строки (возврат каретки/перевод строки).
Следует учитывать, что некоторые строки уже могут иметь в конце эти непечатаемые символы.
В следующем примере показано, как выполняется запись данных в открытый файл всеми тремя методами,
затем файл закрывается:
Sub CreateFile()
Dim fso, tf
Set fso = CreateObject("Scripting.FileSystemObject")
Set tf = fso.CreateTextFile("c:\testwritefile.txt", True)
' Записать строку с переводом на новую строку.
tf.WriteLine("Тестирование 1, 2, 3.")
' Записать три пустых строки в файл.
tf.WriteBlankLines(3)
' Записать строку
tf.Write ("Это тест")
tf.Close
End Sub
Чтение файлов
Для чтения данных из файла используйте методы Read, ReadLine или
ReadAll объекта TextStream. Эти методы и задачи,
решаемые с их помощью, описаны в приведённой ниже таблице:
Задача |
Метод |
Чтение указанного количества символов из файла |
Read |
Чтение полной строки из файла (до символа конца строки, но не включая его) |
ReadLine |
Чтение всего содержимого файла |
ReadAll |
Пример использования данных методов см. в разделе «3.7. Пример работы с объектом FileSystemObject».
Если вы используете методы Read или ReadLine и хотите
пропустить определённую часть данных, то используйте методы Scip или
ScipLine. Полученный в результате работы этих методов текст может быть
сохранён в строку, которую можно отобразить на экране в элементе управления,
передать в качестве параметра в строковую функцию (например, в Left, Right или Mid), соединить с другой строкой и т.п.
В следующем примере показано, как открыть файл, записать в него данные, а затем прочитать их:
Sub ReadFiles
Dim fso, f1, ts, s
Const ForReading = 1
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.CreateTextFile("c:\testreadfile.txt", True)
' Записать строку
f1.WriteLine "Hello World"
f1.WriteBlankLines(1)
f1.Close
' Прочитать содержимое файла
Set ts = fso.OpenTextFile("c:\testreadfile.txt", ForReading)
s = ts.ReadLine
MsgBox "Содержимое файла = '" & s & "'"
ts.Close
End Sub
Перемещение, копирование и удаление файлов
Объектная модель FSO имеет для каждой из операций перемещения, копирования или
удаления файлов по два метода. Эти методы и задачи, решаемые с их помощью, описаны в приведённой ниже таблице:
Задача |
Метод |
Перемещение файла |
File.Move или FileSystemObject.MoveFile |
Копирование файла |
File.Copy или FileSystemObject.CopyFile |
Удаление файла |
File.Delete или FileSystemObject.DeleteFile |
Пример использования данных методов см. в разделе «3.7. Пример работы с объектом FileSystemObject».
В следующем примере создаётся текстовый файл в корневом каталоге диска С, записывается
в него некоторая информация. Затем файл перемещается в директорию с именем \tmp,
копируется в директорию \temp, а затем удаляются копии из обеих директорий.
Для проверки работы этого примера создайте в корневом каталоге диска С директории tmp и temp.
Sub ManipFiles
Dim fso, f1, f2, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.CreateTextFile("c:\testfile.txt", True)
' Записать строку
f1.Write ("This is a test.")
' Закрыть файл для записи
f1.Close
' Получиь дескриптор файла в корневом каталоге C:\.
Set f2 = fso.GetFile("c:\testfile.txt")
' Переместить файл в каталог \tmp
f2.Move ("c:\tmp\testfile.txt")
' Копировать файл в каталог \temp.
f2.Copy ("c:\temp\testfile.txt")
' Получить дескрипторы файлов
Set f2 = fso.GetFile("c:\tmp\testfile.txt")
Set f3 = fso.GetFile("c:\temp\testfile.txt")
' Удалить файлы
f2.Delete
f3.Delete
MsgBox "Все операции выполнены!"
End Sub