- WScript
- FileSystemObject
- Drive
- File
- Folder
- TextStream
- Shell
- WshNetwork
- WshShell
- Wsh[Url]Shortcut
- WshScriptExec
- ADOStreamObject
- CharSet
- EOS
- LineSeparator
- Position
- Size
- Type
- Close()
- CopyTo()
- LoadFromFile()
- Open()
- Read()
- ReadText()
- SaveToFile()
- SetEOS()
- SkipLine()
- Write()
- WriteText()
- Пример
- HTA
- CMD
- uconv
- Enumerator
- Источник
Объект ADO Stream
Объект ADO Stream представляет поток двоичных данных или текста.
В этом справочнике объект ADO Stream рассматривается только как расширение объекта FileSystemObject и можно получить из URL-адреса, указывающего на файл, содержащий двоичные или текстовые данные.
Полное описание объекта можно найти на сайтах docs.microsoft.com, w3schools.com.
Для создания внутри сценария экземпляра объекта ADO Stream можно воспользоваться методом CreateObject объекта WScript:
var objStream = WScript.CreateObject("ADODB.Stream")
Также можно использовать объект ActiveXObject
языка JScript (с помощью этого объекта можно работать с файловой системой из сценариев, находящихся внутри HTML-страниц):
var objStream = new ActiveXObject("ADODB.Stream")
Свойства объекта ADO Stream
CharSet | Устанавливает или возвращает значение, указывающее, в какой набор символов должно быть переведено содержимое. Это свойство используется только с текстовыми объектами Stream. |
EOS | Возвращает, находится ли текущая позиция в конце потока или нет. |
LineSeparator | Задает или возвращает символ разделителя строк, используемый в текстовом объекте Stream. |
Position | Устанавливает или возвращает текущую позицию (в байтах) от начала объекта Stream. |
Size | Возвращает размер открытого объекта Stream. |
Type | Задает или возвращает тип данных в объекте Stream. |
Методы объекта ADO Stream
Close | Закрывает объект Stream. |
CopyTo | Копирует указанное количество символов / байтов из одного объекта Stream в другой объект Stream. |
LoadFromFile | Загружает содержимое файла в объект Stream. |
Open | Открывает объект Stream. |
Read | Считывает весь поток или указанное количество байтов из двоичного объекта Stream. |
ReadText | Считывает весь поток, строку или указанное количество символов из текстового объекта Stream. |
SaveToFile | Сохраняет двоичное содержимое объекта Stream в файл. |
SetEOS | Устанавливает текущую позицию как конец потока (EOS). |
SkipLine | Пропускает строку при чтении текстового потока. |
Write | Записывает двоичные данные в объект двоичного потока. |
WriteText | Записывает символьные данные в текстовый объект Stream. |
CharSet
Свойство CharSet устанавливает или возвращает значение, указывающее, в какой набор символов должно быть преобразовано содержимое Stream (при сохранении в буфере объекта Stream). По умолчанию - «Unicode».
Синтаксис
// Свойство. Чтение и запись. objStream.Charset [ = charset ]
charset - набор символов, в который будет переведено содержимое Stream. Значение по умолчанию - Unicode. Список имен наборов символов, известных системе находится в реестре Windows (HKEY_CLASSES_ROOT\MIME\Database\Charset).
Примечания
Для открытого потока текущая позиция должна быть в начале потока (0), чтобы можно было установить кодировку.
Это свойство используется только с текстовыми объектами Stream.
EOS
Свойство EOS возвращает логическое значение, которое указывает, находится ли текущая позиция в конце потока. true
указывает, что текущая позиция находится в конце потока.
Синтаксис
// Свойство. Только чтение. objStream.EOS
Примечания
чтобы установить текущую позицию в конец потока, используйте метод SetEOS.
чтобы определить текущую страницу потока, используйте свойство Position.
LineSeparator
Свойство LineSeparator устанавливает или возвращает значение LineSeparatorsEnum, которое указывает символ разделителя строк, используемом в текстовом объекте Stream. По умолчанию - adCRLF.
Синтаксис
// Свойство. Чтение и запись objStream.LineSeparator [ = LineSeparatorsEnum]LineSeparatorsEnum:
adCRLF | -1 | По умолчанию. Перевод строки возврата каретки |
adLF | 10 | Только перевод строки |
adCR | 13 | Только возврат каретки |
Position
Свойство Position устанавливает или возвращает значение num, которое указывает текущую позицию (в байтах) от начала объекта Stream.
Синтаксис
// Свойство. Чтение и запись objStream.Position [ = num]
num - позиция (в байтах) от начала объекта Stream.
Size
Свойство Size возвращает длинное значение, которое указывает размер (в байтах) объекта Stream.
Синтаксис
// Свойство. Чтение objStream.Size
Примечания
Это свойство можно использовать только для открытого объекта Stream.
Это свойство возвращает -1, если размер потока неизвестен.
Type
Свойство Type устанавливает или возвращает значение StreamTypeEnum, которое указывает тип данных в объекте Stream. По умолчанию - adTypeText.
Синтаксис
// Свойство. Чтение и запись objStream.Type [ = StreamTypeEnum ]StreamTypeEnum:
adTypeBinary | 1 | Двоичные данные |
adTypeText | 2 | По умолчанию. Текстовые данные |
Close()
Метод Close() используется для закрытия объекта Stream и освобождения системных ресурсов.
Синтаксис
objStream.Close()
Когда объект закрыт, он не удаляется из памяти. Можно изменить настройки свойства и открыть его снова позже.
CopyTo()
Метод CopyTo() используется для копирования указанного количества символов или байтов из открытого объекта Stream в другой открытый объект Stream.
Синтаксис
objStream.CopyTo ( dest, numchars )
Параметры
- dest
- Обязательный. Куда копировать Stream (содержит ссылку на открытый объект Stream).
- numchars
- Необязательно. Целое число, указывающее количество символов или байтов, которые должны быть скопированы из текущей позиции в исходном потоке в целевой поток. По умолчанию -1 (копирует все данные из текущей позиции в EOS).
Примечания
Если указанное число больше доступного количества байтов/символов до EOS, то копируются только байты/символы из текущей позиции в EOS.
LoadFromFile()
Метод LoadFromFile() используется для загрузки содержимого существующего файла в открытый объект Stream. Все существующие данные в объекте Stream будут перезаписаны.
Синтаксис
objStream.LoadFromFile ( file )
Параметры
- file
- Имя существующего файла для загрузки в объект Stream.
Примечание
После вызова этого метода текущая позиция устанавливается на начало потока (Position = 0).
Open()
Метод Open() используется для открытия объекта Stream.
Синтаксис
objStream.Open ()
Параметры
Параметры для сокращенного варианта справочника не являются обязательными.
Read()
Метод Read() используется для чтения всего потока или указанного количества байтов из двоичного объекта Stream и возвращает полученные данные (val) в качестве варианта.
Этот метод используется только с двоичными объектами Stream, для текстовых объектов Stream используйте метод ReadText().
Синтаксис
val = objStream.Read ( numbytes )
Параметры
- numbytes
- Необязательно. Число байтов для чтения из файла или значение. По умолчанию. Читает все байты из потока от текущей позиции до EOS.
Если вы указали больше, чем количество байтов, оставшихся в потоке, возвращаются только оставшиеся байты.
ReadText()
Метод ReadText() используется для чтения всего потока, строки или указанного количества символов из текстового объекта Stream и возвращает полученные данные в виде строки.
Этот метод используется только с текстовыми объектами Stream, для двоичных объектов Stream используйте метод Read().
Синтаксис
str = objStream.ReadText ( numbytes | StreamReadEnum)
Параметры
- numbytes
- Необязательно. Количество символов для чтения из файла или значение StreamReadEnum. По умолчанию adReadAll.
Если вы указали больше, чем количество байтов, оставшихся в потоке, возвращаются только оставшиеся байты. StreamReadEnum:adReadAll -1 По умолчанию. Читает все символы из потока, от текущей позиции до EOS adReadLine -2 Читает следующую строку из потока
SaveToFile()
Метод SaveToFile() используется для сохранения двоичного содержимого открытого объекта Stream в локальный файл.
После вызова этого метода текущая позиция в потоке устанавливается на начало потока (Position = 0).
Синтаксис
objStream.SaveToFile ( file, opt )
Параметры
- file
- Обязательно. Имя файла для сохранения содержимого объекта Stream.
- opt
- Значение opt, указывающее, следует ли создавать файл, если он не существует (1), или перезаписывать его (2).
SetEOS()
Метод SetEOS() используется для установки текущей позиции как конца потока (EOS). Этот метод также обновляет свойство EOS.
Любые данные, выходящие за рамки нового EOS, будут усечены и потеряны.
Синтаксис
objStream.SetEOS ()
SkipLine()
Метод SkipLine() используется для пропуска строки при чтении текстового потока. Все символы, включая разделитель строк, пропускаются.
Этот метод используется только с текстовыми объектами Stream.
Синтаксис
objStream.SkipLine ( )
Write()
Метод Write() используется для записи двоичных данных в двоичный объект Stream.
Синтаксис
objStream.Write ( buffer )
Параметры
- buffer
- Массив байтов для записи в двоичный объект Stream
Комментарии
Если в объекте Stream есть данные, а текущая позиция - EOS, новые данные будут добавлены помимо существующих данных. Если текущая позиция не EOS, существующие данные будут перезаписаны.
Если вы напишете предыдущую версию EOS, размер потока увеличится. EOS будет установлен на последний байт в потоке. Если вы не записываете предыдущий EOS, текущая позиция будет установлена на следующий байт после вновь добавленных данных. Ранее существующие данные не будут усечены. Вызовите метод SetEOS для усечения.
Примечание
Этот метод используется только с двоичными объектами Stream, для объектов textStream используйте метод WriteText.
WriteText()
Метод WriteText() используется для записи текста в текстовый объект Stream.
Синтаксис
objStream.WriteText( data, opt )
Параметры
- data
- Обязательно. Текст, который будет записан в текстовый объект Stream.
- opt
- Необязательно. Значение, указывающее, нужно ли добавлять к тексту разделитель строк:
0 - По умолчанию. Записывает указанный текст в объект Stream
1 - Записывает указанный текст и разделитель строк в объект Stream.
Если свойство LineSeparator не определено, возникнет ошибка времени выполнения.
Комментарии
Если в объекте Stream есть данные, а текущая позиция - EOS, новые данные будут добавлены помимо существующих данных. Если текущая позиция не EOS, существующие данные будут перезаписаны.
Если вы напишете предыдущую версию EOS, размер потока увеличится. EOS будет установлен на последний символ в потоке. Если вы не пишете после EOS, текущая позиция будет установлена на следующий символ после вновь добавленных данных. Ранее существующие данные не будут усечены. Вызовите метод SetEOS для усечения.
Примечание
Этот метод используется только с текстовыми объектами Stream, для двоичных объектов Stream используйте метод Write.
Пример.
Смена кодировки файла
var str= new ActiveXObject("ADODB.Stream"); str.Type = 2; str.Charset = "windows-1251"; str.Open(); str.LoadFromFile("C:\\ANSI.txt"); Text = str.ReadText(); str.Close(); str.Charset = "UTF-8"; str.Open(); str.WriteText(Text); str.SaveToFile ("C:\\UTF-8.txt", 2); str.Close();
Для смены кодировки файлов файла можно воспользоваться моей программой uconv. Эта программа была написана для моих HTA-скриптов и предназначена для перекодировки данных из одной кодировки в другую. С описанием прораммы можно ознакомиться здесь
Вышеуказанный скрипт можно заменить командой:
uconv.exe -ansi C:\ANSI.txt -utf8 C:\UTF-8.txt