Имя: Пароль:
1C
1С v8
ADODB.Stream SaveToFile() в цикле приводит к фрагментации
0 echo77
 
24.09.13
12:31
В общем, получаю данные запросом с MSSQL сервера(картинки)
И в цикле записываю их в файлы вот такой процедурой:

Процедура БиоСКУД_СохранитьКартинку(BinaryData, ИмяФайла)
    
    // Определим начало заголовка FF,D8,FF,E0 JPEG
    Массив = BinaryData.Unload();
    Смещение = 8;
    Для н=0 По Массив.ВГраница()-4 Цикл
        Если Массив[н]     = 255 // 0xFF
        И     Массив[н+1] = 216 // 0xD8
        И     Массив[н+2] = 255 // 0xFF
        И     Массив[н+3] = 224 // 0xE0
        Тогда
            Смещение = н;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    StreamTypeEnum = Новый Структура("adTypeBinary, adTypeText", 1, 2);
    SaveOptionsEnum = Новый Структура("adSaveCreateNotExist, adSaveCreateOverWrite", 1, 2);
    ConnectModeEnum = Новый Структура(
    "adModeRead, adModeReadWrite, adModeRecursive, adModeShareDenyNone,
    |adModeShareDenyRead, adModeShareDenyWrite, adModeShareExclusive,
    |adModeUnknown, adModeWrite", 1, 3, 4194304, 16, 4, 8, 12, 0, 2);
    
    Stream = Новый COMОбъект("ADODB.Stream");
    NewStream = Новый COMОбъект("ADODB.Stream");
    NewStream.Type = StreamTypeEnum.adTypeBinary;
    NewStream.Mode = ConnectModeEnum.adModeReadWrite;
    NewStream.Open();
    Stream.Type = StreamTypeEnum.adTypeBinary;
    Stream.Mode = ConnectModeEnum.adModeReadWrite;
    Stream.Open();
    Stream.Write(BinaryData);
    Stream.Position = Смещение;
    Stream.CopyTo(NewStream, Stream.Size - Смещение);
    NewStream.SaveToFile(ИмяФайла, SaveOptionsEnum.adSaveCreateOverWrite);
    Stream.Close();
    NewStream.Close();
    
КонецПроцедуры

в результате, все файлы размером более 1 кластера получаются фрагментированными. Как этого избежать?
1 ДенисЧ
 
24.09.13
12:33
а не пох ли?
2 echo77
 
24.09.13
13:05
(1) несколько тысяч файлов разбитые на фрагменты приведут к тому что их копирование-перемещение затянется на долго
3 echo77
 
25.09.13
12:14
Как победить то?
4 H A D G E H O G s
 
25.09.13
12:20
Дефрагментировать диск перез записью.
5 echo77
 
27.09.13
14:21
(4) После дефрагментации такая же фигня