Чтение и запись текстовых файлов.

Текстовый файл представляет собой последовательность символов, принадлежащих определенному алфавиту. Каждый символ представляется определенным набором битов, зависящим от используемой кодировки. В случае 8-и битной кодировки (например, CP1251, стандартной для русскоязычных версий Windows), устанавливается строгое соответствие между 256-ю байтами и символами кодовой страницы. Помимо этого существуют многобайтовые кодировки (UTF-8, UTF-16, UTF-32, Unicode), позволяющие сохранять гораздо большее количество символов. В текстовых файлах также обычно присутствуют так называемые управляющие символы, не имеющие графического представления, но использующиеся для управления выводом текста на устройствах (табуляция, возврат каретки, перевод строки, звуковой сигнал и тп). Для чтения, создания и редактирования текстовых файлов человеком используются различные текстовые редакторы (текстовые процессоры). Исходные коды программ, написанных на различных ЯП, как правило, хранятся именно в текстовых файлах.

Объект FileSystemObject позволяет без труда осуществлять чтение и запись текстовых файлов в сценариях VBScript.

Для чтения всего текстового файла используем функцию readTxtFile (функция возвращает строку, содержащую все содержимое файла.):

Function readTxtFile(fPath)'возвращает содержимое текстового файла

    Set fso = CreateObject("Scripting.FileSystemObject")

    Set file = fso.OpenTextFile(fPath)
    ReadTxtFile = file.ReadAll()
    file.Close

End Function

Для записи текствого файла используем процедуру writeTxtFile:

Sub writeTxtFile(fPath, str, mode)'пишет строку в текстовый файл

    Set fso = CreateObject("Scripting.FileSystemObject")

    Set file = fso.OpenTextFile(fPath, mode, True)'create file
    file.Write(str)
    file.Close

End Sub

Пример:

Const fName = "sample.txt"

WScript.Echo "Creating file " & Chr(34) & fName & Chr(34)

Call writeTxtFile(fName, "The First  String", ForWriting)'создание и запись файла

WScript.Echo "Content of the file:" & vbCrLf & "{"
WScript.Echo readTxtFile(fName)'чтение и вывод файла
WScript.Echo "}"

WScript.Echo "Appending string to the file.."

Call writeTxtFile(fName, vbCrLf & "The Second String", ForAppending)'добавление в файл

WScript.Echo "Content of the file:" & vbCrLf & "{"
WScript.Echo readTxtFile(fName)'чтение и вывод файла
WScript.Echo "}"
WScript.Echo "The End"
Вывод скрипта

Функция getAllStrings возвращает все строки указанного файла в виде массива.

Function getAllStrings(fpath)'

	Set strList = CreateObject("System.Collections.ArrayList")

	Set fso = CreateObject("Scripting.FileSystemObject")

	Set file = fso.OpenTextFile(fPath, ForReading , True)

	Do Until file.AtEndOfStream

		str = file.ReadLine()

		Call strList.Add(str)
		
	Loop

	file.Close

	getAllStrings = strList.ToArray()

End Function

Пример:

Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const fName = "sample.txt"
sampleStr = "a" & vbCrLf & "b" & vbCrLf & "c" & vbCrLf & "d" & vbCrLf & "e"

WScript.Echo "Creating file " & Chr(34) & fName & Chr(34)

Call writeTxtFile(fName, sampleStr, ForWriting)'создание и запись файла

strArr = getAllStrings(fName)

WScript.Echo "File has " & UBound(strArr) & " strings:"

For i = 0 To UBound(strArr)-1

	WScript.Echo i+1 & ":" & Chr(34) & strArr(i) & Chr(34)

Next
Вывод скрипта