Форум » [x]Harbour » Чтение файлов из сетевой папки .... » Ответить
Чтение файлов из сетевой папки ....
Andrey: Считываю из сетевой папки файлы. Файлы могут быть, а могут и не быть. А доступ к папке регулирует админ - чтение: разрещено/запрещено. Как у себя в программе определить, что юзеру запрещено чтение файлов ?
Ответов - 21, стр:
1 2 All
PSP: Чем читаешь?
Andrey: [pre2] cPath := "\\Server\Documents" aFiles := DIRECTORY( cPath + "*.*" )[/pre2]
PSP: FOPEN( <cFile>, [<nMode>] ) --> nHandle Если nHandle == -1, значит открытие не состоялось. Подробности ошибки сообщит FError()
Dima: Andrey пишет: Как у себя в программе определить, что юзеру запрещено чтение файлов ? Там еще и сканирование (список содержимого папки) может быть запрещено
PSP: Тогда у него не будет пути к файлу вообще. До FOpen не дойдёт.
Andrey: PSP пишет: FOPEN( <cFile>, [<nMode>] ) --> nHandle Нельзя этого сделать. Какой файл открывать ? Не знает программа что открывать. Там любой файл может быть, а может и не быть... Нужно получить список файлов из папки или получить ошибку открытия папки....
AndreyZh: Проверить существования и права папки: скопируйте свой маленький файл туда и анализ успешности, если да то удалите/измените его - анализ успешности, это права на папку
PSP: Andrey пишет: Нужно получить список файлов из папки или получить ошибку открытия папки.... Andrey пишет: aFiles := DIRECTORY( cPath + "*.*" ) aFiles будет пустой, если к папке нет доступа.
SergKis: Andrey Исп. функции hb_vf...() http://www.kresin.ru/hrbfaq_3.html#Doc12 раздел 3.12. API ...
Andrey: AndreyZh пишет: Проверить существования и права папки: скопируйте свой маленький файл туда и анализ успешности, если да то удалите/измените его - анализ успешности, это права на папку PSP пишет: aFiles будет пустой, если к папке нет доступа. Andrey пишет: Считываю из сетевой папки файлы. Файлы могут быть, а могут и не быть. А доступ к папке регулирует админ - чтение: разрещено/запрещено. Как у себя в программе определить, что юзеру запрещено чтение файлов ?
SergKis: Andrey Что не ясно ? Вроде древний метод работы 1. просишь файлы директории по маске 2. если получил, то доступ к дир. есть 3. по списку или выборочно, пытаешься открыть файл или копировать к себе. 4. если неудачно, то файл или занят или недоступен, можешь анализировать nResult или запрос ф-ии ERROR(), забыл как точно называется, ее результат код ошибки Для проверки на запись, пытаешься создать в дир. файл, если удачно - писать можно.
Andrey: Да дело в том что у юзер может быть ТОЛЬКО чтение файлов и в папке может НЕ БЫТЬ файлов (забыли туда положить). А как тогда определить - есть у юзера право на чтения этой папки ? Когда файлы в папке есть, то понятно как действовать.
SergKis: Andrey пишет забыли туда положить Это тогда к телепатам, они точно знают. По факту нет файла - не положили. Тот кто должен пусть выкладывает, может и протокол к файлу кладет (как бы 2а файла)
Andrey: SergKis пишет: Это тогда к телепатам, они точно знают.
PSP: Andrey пишет: А как тогда определить - есть у юзера право на чтения этой папки ? FERROR() Return Values Error Meaning -------------- ---------------------------------------------- 0 Successful 2 File not found 3 Path not found 4 Too many files open 5 Access denied 6 Invalid handle 8 Insufficient memory 15 Invalid drive specified 19 Attempted to write to a write-protected disk 21 Drive not ready 23 Data CRC error 29 Write fault 30 Read fault 32 Sharing violation 33 Lock Violation
rvu: Просматриваю папки, ищу в них файлы. Использую функцию DIRECTORY("*.*","D") . Если у папки стоит атрибут Архивная, она ее не видит. Что делать? Файлы с таким атрибутом видит. "DA" писал, не помогает.
Pasha: Может быть дело не в архивном атрибуте, а в другом ? Попробуйте DIRECTORY("*.*","DHS")
rvu: Pasha пишет: Попробуйте DIRECTORY("*.*","DHS") Нет, не помогает. А вот если предварительно снимаю с каталогов архивные атрибуты attrib.exe -A каталог\*.* /D /S то потом все работает.
Pasha: Странно. Создаю папку. Кидаю туда программу, создаю в ней еще папку ff, выдаю: attrib +a ff Убеждаюсь, что атрибут на ff установлен Запускаю программу, которая отрабатывает DIRECTORY("*.*","DHS") Результат: 4 элемента: 3 папки: "." ".". "ff", и сама программа Может там дело в файловой системе ? Я запускаю локально на ntfs
rvu: Pasha пишет: Я запускаю локально на ntfs Я тоже. У меня в папке еще папки, в них еще. И у всех атрибуты архив. Не работает, пока атрибут не сниму. Если интересно, могу выложить.
полная версия страницы