Vbs прочитать текстовый файл построчно

Обновлено: 04.07.2024

F AQ: Работа с файлами средствами VB

( обращений: 37903 с 08.08.2003)

О писание: Примеры по работе с файлами из среды VB (VBA)

Добавил на сайт: am 08.08.2003

'Чтение бинарного файла в массив байт

'запись массива байт в файл

'Построчное чтение текстового файла

Open App.Path & "\" & sININame For Input As iFile

Do While Not EOF(iFile) ' Loop until end of file.

'sINI = sINI + txt + vbCrLf

'построчная запись в текстовый файл

Then file_name = file_name & "\"

file_name = file_name & LOG_FILE_NAME

' Remember that the file is open.

' Write the date and time, and the error message.

'Далее приведены 2 готовые функции, читающие текстовый файл в строковую переменную.

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

Public Function File2Str(sPath As String ) As String

Dim txt As String

Dim sLine As String

Open sPath For Input As fn

Do While Not EOF(1)

txt = IIf(Len(txt) > 0, txt & vbCrLf, "" ) & sLine

Public Function File2StrB(sPath As String ) As String

Dim txt As String

Dim sLine As String

Dim TheBytes() As Byte

ReDim TheBytes(FileLen(sPath) - 1)

Open sPath For Binary Access Read As fn

File2StrB = StrConv(TheBytes(), vbUnicode)

Dim fso, a, f, retstring, retstream

Const ForReading = 1, ForWriting = 2

Set fso = CreateObject( "Scripting.FileSystemObject" )

Set f = fso.GetFile( "d:\config.sys" )

Set a = f.OpenAsTextStream(ForReading, False )

Do While a.AtEndOfStream <> True

If retstring Like "files*" Then

retstream = retstream & retstring & vbCrLf

Set a = f.OpenAsTextStream(ForWriting, False )

(пример использует объектную модель библиотеки Windows Scripting Host, но и без неё идея такая же - прочитать построчно файл, изменить нужные строки и переписать его заново).

Есть три способа создания пустого текстового файла (иногда называемого как «text stream»).

Первый способ — это использование метода CreateTextFile. В следующем примере показано, как создать текстовый файл, используя этот метод: Пример использования данного метода см. в разделе «3.7. Пример работы с объектом FileSystemObject».

Второй способ — это использование метода OpenTextFile объекта FileSystemObject с набором флагов ForWriting. В следующем примере показано, как создать текстовый файл, используя этот метод: Третий способ — это использование метода OpenAsTextStream с набором флагов ForWriting. В следующем примере показано, как создать текстовый файл, используя этот метод:

Добавление данных в файл

  • Открыть текстовый файл
  • Записать данные
  • Закрыть файл

Для записи данных в текстовый файл используйте методы Write, WriteLine или WriteBlankLines объекта TextStream, в зависимости от задач, описанных в приведённой ниже таблице:

Задача Метод
Запись данных в текстовый файл без символа перехода на новую строку в конце Write
Запись данных в текстовый файл с символом перехода на новую строку в конце WriteLine
Запись одной или более пустых строк в открытый текстовый файл WriteBlankLines

Для закрытия текстового файла используйте метод Close объекта TextStream. Закрыть файл можно также методом Close объекта FileSystemObject. Пример использования данных методов см. в разделе «3.7. Пример работы с объектом FileSystemObject».

ПРИМЕЧАНИЕ
Символ новой строки содержит символ или символы (зависит от операционной системы) для перевода курсора в начало новой строки (возврат каретки/перевод строки). Следует учитывать, что некоторые строки уже могут иметь в конце эти непечатаемые символы.

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

Чтение файлов

Для чтения данных из файла используйте методы Read, ReadLine или ReadAll объекта TextStream. Эти методы и задачи, решаемые с их помощью, описаны в приведённой ниже таблице:

Задача Метод
Чтение указанного количества символов из файла Read
Чтение полной строки из файла (до символа конца строки, но не включая его) ReadLine
Чтение всего содержимого файла ReadAll

Пример использования данных методов см. в разделе «3.7. Пример работы с объектом FileSystemObject».

Если вы используете методы Read или ReadLine и хотите пропустить определённую часть данных, то используйте методы Scip или ScipLine. Полученный в результате работы этих методов текст может быть сохранён в строку, которую можно отобразить на экране в элементе управления, передать в качестве параметра в строковую функцию (например, в Left, Right или Mid), соединить с другой строкой и т.п.

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

Перемещение, копирование и удаление файлов

Объектная модель FSO имеет для каждой из операций перемещения, копирования или удаления файлов по два метода. Эти методы и задачи, решаемые с их помощью, описаны в приведённой ниже таблице:

Задача Метод
Перемещение файла File.Move или FileSystemObject.MoveFile
Копирование файла File.Copy или FileSystemObject.CopyFile
Удаление файла File.Delete или FileSystemObject.DeleteFile

Пример использования данных методов см. в разделе «3.7. Пример работы с объектом FileSystemObject».

В следующем примере создаётся текстовый файл в корневом каталоге диска С, записывается в него некоторая информация. Затем файл перемещается в директорию с именем \tmp, копируется в директорию \temp, а затем удаляются копии из обеих директорий.

Для проверки работы этого примера создайте в корневом каталоге диска С директории tmp и temp.

Объект TextStream сервера Windows Script Host

Работа с текстовыми файлами (параллельно можете почитать про редактор Notepad++) заключается в использовании объект TextStream сервера Windows Script Host, который позволяет производить последовательное считывание (строка за строкой) документа. Обработка файлов требует возможности считывать из них информацию и записывать в них данные. Для создания класса TextStream можно использовать следующие методы: CreateTextFile, OpenTextFile объекта FileSystemObject и OpenAsTextStream класса File.

Теперь давайте перейдем к рассмотрению свойств и методов объекта TextStream.

Свойства класса TextStream – работа с текстовыми файлами

AtEndOfLine – При считывании информации свойство содержит логическое true, если был достигнут конец строки и false в противном случае. Только_чтение.

AtEndOfStream - При считывании информации содержит логическое true, если был достигнут конец и false в противном случае. Только_чтение.

Column – Позволяет при работе с текстовыми файлами получить номер колонки текущего символа. Только_чтение.

Line – Позволяет получить номер текущей строчки в документе. Только чтение.

Методы класса TextStream – работа с текстовыми Windows файлами

Close () – Закрывает документ после окончания записи в него данных.

Read (n) – Метод позволяет считать заданное количество символов (n), возвращает полученную строчку.

ReadAll () – Позволяет считать полностью все содержимое и вернуть полученный результат.

ReadLine () - Позволяет считать полностью строчку

Skip (n) – Метод полезен, если надо при считывании данных пропустить заданное количество символов (n).

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

Write (string) – Позволяет произвести запись строчки (string), без символа конца.

WriteBlankLines (n) - Записывает заданное количество (n) пустых строк (символы перевода строчки и возврата каретки)

WriteLine ([string]) - Позволяет произвести запись строки (string), вместе с символом конца строки). Если параметр string отсутствует, то в документ будет записываться пустая строка.

работа с текстовыми Windows файлами

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

работаем с текстовыми Windows файлами

Хорошо, с программирование закончили… Видим, что примеры очень простые. Кроме того, важно отметить, что для доступа TextStream нам не нужно создавать отдельную переменную . Это связано с тем, что данный класс доступен автоматически при работе с текстовыми файлами. Используя свойство Arguments мы можем обработать любой элемент, который перетащим на иконку скрипта, далее идет проверка условия: если количество передаваемых аргументов ровно нолю, то будет выведено диалоговое окно с предупреждением. Если число передаваемых аргументов больше ноля, то произойдет считывание содержимого и вывод полученного результата.

Спасибо за внимание. Автор блога Владимир Баталий

Непосредственно для работы с текстовыми файлами в пространстве System.IO предназначены специальные классы StreamReader и StreamWriter .

Чтение из файла и StreamReader

Класс StreamReader позволяет читать из текстового файла весь текст или отдельные строки. Рассмотрим основные его методы:

Метод Close закрывает файл и освобождает поток

Метод Peek возвращает следующий доступный символ, если символов больше нет, то возвращает -1

Метод Read считывает и возвращает следующий символ в численном представлении. Имеет перегруженную версию: Read(array As Char(), index As Integer, count As Integer) , где array - массив, куда считываются символы, index - индекс в массиве array, начиная с которого записываются считываемые символы, и count - максимальное количество считываемых символов

Метод ReadLine считывает одну строку из файла

Метод ReadToEnd считывает из файла весь текст

Считаем текст из файла различными способами:

Как и в случае с классом FileStream здесь используется конструкция Using .

В первом случае мы разом считываем весь текст с помощью метода ReadToEnd() .

Во втором случае в цикле While считываем построчно. Когда объект reader дойдет до конца файла и больше строк не останется, то метод reade.ReadLine() вернет значение Nothing.

В третьем случае считываем в массив четыре символа.

Обратите внимание, что в последних двух случаях в конструкторе StreamReader указывалась кодировка System.Text.Encoding.UTF8 . Если нам известна кодировка файла, то мы можем ее указать при чтении файла. Также через другие свойства мы можем указать другие кодировки. Если кодировка не указана, то по умолчанию при чтении используется UTF8 . Иногда важно указывать кодировку, так как она может отличаться от UTF8, и тогда мы получим некорректный вывод.

Запись в файл и StreamWriter

Для записи в текстовый файл применяется класс StreamWriter . Его основные методы:

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

Flush : записывает в файл оставшиеся в буфере данные и очищает буфер.

Write : записывает в файл данные простейших типов, как Integer, Double и т.д.

WriteLine : записывает в файл строку

Посмотрим на использование класса StreamWriter на примере:

Вначале весь текст из файла считывается в переменную text, а затем содержание этой переменной с помощью объекта StreamWriter записывается в другой файл.

Класс StreamWriter имеет несколько конструкторов. Здесь мы использовали два из них: New StreamWriter(writePath, False) . В качестве первого параметра передается путь к записываемому файлу. Второй параметр представляет булевую переменную, которая определяет, будет файл дозаписываться или перезаписываться. Если этот параметр равен True , то новые данные добавляются в конце к уже имеющимся данным. Если False , то предыдущее содержимое стирается, и файл перезаписывается. И если в первом случае файл перезаписывается, то во втором делается дозапись в конец файла.

Читайте также: