Создание потока
1) для этого можно использовать стандартную функцию копирования Far2, явно указывая имя потока через двоеточие после имени файла
типичная последовательность действий:
- на пассивной панели становимся на файл, в который хотим внедрить поток,
на активной панели становимся на файл, содержимое которого хотим поместить в поток,
жмем F5 End CtrlShiftEnter : ShiftEnter Enter
готово
групповое создание не поддерживается (а как?) — только по одному потоку за раз
внедрение потока работает независимо от положения флажка Use system copy routine
юникондные имена файлов и потоков поддерживаются
2) старинный ANSI плагин NTFS File Streams
используется банальное копирование на панель плагина
внедрять поток возможно и в файл, и в папку
групповое создание поддерживается
юникондные имена файлов и потоков поддерживаются (!)
Просмотр/редактирование потока
можно использовать внутренние вьюер/редактор через префикс, что-то типа:
view: c:\windows\win.ini:win.bmp
edit: c:\windows\win.ini:win.txt
при этом можно свободно переключаться между вьюером и редактором (по F6)
будучи во вьюере, можно вызвать плагин для текущего файла, и некоторые даже работают:
PictureView2 и S&R VersionInfo заработали, MMview и Hlfviewer отказались (что интересно, напрямую через собственный префикс PictureView2 не смог открыть поток)
Открытие потока во внешней программе
без проблем, например:
c:\windows\win.ini:win.txt
поток будет открыт в ассоциированной программе, если она поддерживает такой формат пути. notepad и akelpad — поддерживают
Листинг потоков
1) в Far2 можно, во-первых, в обычной файловой панели использовать колонки: количество потоков и суммарный размер потоков файла (F, G);
во-вторых, использовать стандартный поиск (AltF7): устанавливаем флажок Process alternate data streams под кнопкой Advanced и ищем строку *:* в желаемой области. по окончании поиска результаты передаем в панель и пользуемся
для автоматизации можно использовать в юзерменю примерно такой пункт
Code: Select all
s: Search ADS
macro:post AltF7 CtrlY * : * Enter
потоки с панели TmpPanel другими плагинами замечательно подхватываются, ну кроме таких, как MMview и Hlfviewer
2) все тот же плагин NTFS File Streams
список потоков он предоставляет в виде плагиновой панели, также на панели есть основной поток и информация по контролю доступа
юникондные имена файлов и потоков поддерживаются
потоки с панели плагина другими плагинами не подхватываются: PictureView2 и S&R VersionInfo не заработали
3) консольная утилита LADS
выводит список всех потоков всех файлов, у которых они есть, в заданной папке (можно и во вложенных папках)
используется кодировка ANSI, поэтому с юникодом в именах — проблемы
формат выводимого списка позволяет без больших усилий получать файл-список для плагина TmpPanel:
в юзерменю добавляем такие пункты
Code: Select all
a: Panel ADS
tmp: <lads|ssed -n "/\s\+[0-9]\+\s\+[^:]\+:/{s/\\:/:/;s/\s\+[0-9]\+\s\+//;p}"|recode cp1251..co|recode utf-16be..utf-16le
v: View ADS
tmp:+menu <lads|ssed -n "/\s\+[0-9]\+\s\+[^:]\+:/{s/\\:/:/;s/\s\+[0-9]\+\s\+/view: /;p}"|recode cp1251..co|recode utf-16be..utf-16le
при вызове первого пункта получаем панель с потоками, при вызове второго — получаем меню потоков. и панель, и меню могут быть пустыми, если потоков в данной папке нет
при выборе пункта меню потоков команда не запускается на исполнение немедленно, а остается в комстроке готовой к нажатию enter или редактированию — это особенность работы плагина TmpPanel
4) консольная утилита streams Марка Руссиновича
с русским и другими подобными символами у нее вообще никак — сплошь вопросительные знаки
и формат представления списка специфичен
поэтому не катит
Удаление потоков
1) имея список потоков на панели TmpPanel, может использовать операцию удаления, и она будет применяться именно к указанному потоку
можно удалять избирательно, по одному
юникодные имена не вызывают затруднений
2) плагин… правильно: NTFS File Streams
можно удалять избирательно, по одному
юникодные имена не вызывают затруднений
3) консольная утилита streams Марка Руссиновича
удаляются сразу все дополнительные потоки файла
юникодные имена затруднений не вызывают, как ни странно. видимо вопросики только при выводе на экран появляются
Извлечение потоков
1) Far2 в лице панели плагина TmpPanel со списком потоков не смог помочь в извлечении. единственный способ — это открыть поток в редакторе и сохранить как. применимо даже к бинарным файлам, если в редакторе нет плагинов, фильтрующих символы
2) плагин NTFS File Streams судя по докам должен извлекать потоки, но на практике добиться этого не удалось, выдает две ошибки подряд: Copy error, Канал был закрыт.
Копирование файлов с потоками
стандартная функция копирования Far2 копирует файлы, сохраняя потоки, если установлен флажок Use system copy routine (само собой целевой том должен быть NTFS)
но есть отличие от поведения explorer'а при копировании на FAT том. explorer сообщает о невозможности скопировать файл без потери свойств, а Far2 молча некопирует потоки