Как определить, есть ли файл на диске
Страница 11. Способ 11 (Script)


 

Способ 11 (Script)

Ни один из перечисленных способов не будет работать из .html документа. Зато из скрипта доступен Scripting.FileSystemObject и нам этого достаточно.


function FileExists (fname)
{
     var fso = new ActiveXObject("Scripting.FileSystemObject");
     return fso.FileExists(fname);
}

Мы вполне можем использовать Scripting.FileSystemObject и в COM-модуле:


            
HRESULT FileExists (LPOLESTR oszFilename)
{
    CComPtr<IFileSystem> pfs;
    HRESULT hr = pfs.CoCreateInstance(OLESTR("Scripting.FileSystemObject"));
    if (SUCCEEDED(hr)) {
        VARIANT_BOOL ret = VARIANT_FALSE;
        hr = pfs->raw_FileExists(fname, &ret);
        if (SUCCEEDED(hr))
            hr = ret ? S_OK : S_FALSE;
    }
    return hr;
}

Фактически, это очень извращенный способ вызова все той же функции access() из способа 1, с той разницей, что FileSystemObject работает с именами файлов в UNICODE и под WindowsNT/2k передает имя файла напрямую, а под Windows 9x/Me (и даже 3.1 с интернет эксплорером!) сам преобразовавает его в ANSI.

 
« Предыдущая статья   Следующая статья »