![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 30.04.2019
Сообщений: 44
|
![]()
Добрый день.
Какой есть аналог File.Exists, чтобы учесть ситуацию, когда нет доступа к удалённому компьютеру (например, удалённый компьютер выключен)? И чтобы я в своей программе мог сообщить юзеру: нет доступа к удалённому компьютеру. А не писать: файл не существует. Например, есть api-функция FindFirstFile. Если нет доступа к удалённому компьютеру, то будет создаваться ошибка, по номеру которой можно понять: или файла нет, или нет доступа к удалённому компьютеру. В C# есть готовые инструменты для этой задачи? |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Вы постоянно ждёте какого-то чуда.
с этой темой "С помощью какой api-функции можно узнать, открыт доступ к сетевой папке или нет?" уже разобрались? Вы не можете получить от функций работы с ФС (FileExists, FindFirstFile и т.п.) сведений о том, включён или нет компьютер. Даже если не брать во внимание, что компьютер включён, а сетевой кабель вытащен. Или ОС на компьютере не загрузилась. Или всё загрузилось, но сдох роутер. или админ вывел компьютер из состава ЛВС. И т.д. и т.п. Более того, и компьютер может быть включён, и файл существовать. А доступа к нему у данного пользователя нет (нет доступа к сетевой папке). Функция FileExists вернёт false == для конечного пользователя это означает, что такого файла нет. Чисто гипотетически, можно проверять наличие компьютера в локальной сети. Но для этого нужно знать IP или имя компьютера в ЛВС (эта информация может быть у Вас в виде пути к вашему файлу \\ip\... или \\PCName\... но это сложно и не очень надёжно. ну и последнее. есть ли большая разница пользователю, почему нет файла - мыши перегрызли кабель, компьютер выключен, файл переименовали или удалили, или нет прав доступа? Работать он с удалённым файлом всё равно не сможет, верно? О чём ему и сообщит функция FileExists (или аналогичная). |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 30.04.2019
Сообщений: 44
|
![]()
То есть в C# нет готовых инструментов для этого? Аналога File.Exists не существует?
Так то да, если с файлом надо что-то сделать и нет доступа к нему, то да, не имеет значение, по какой причине его нет. Но если задача состоит в том, чтобы узнать, есть доступ по локальной сети к файлу или нет? Такая ведь задача может быть? Не просто узнать: существует файл или нет, а именно акцент, узнать есть ли доступ по локальной сети к файлу? С помощью api-функции FindFirstFile можно это узнать, не зная IP или ещё что-то: просто указывается полное имя файла и функция FindFirstFile сообщит информацию о файле в виде ошибки. Последний раз редактировалось Korshi; 19.06.2019 в 10:11. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
как не существует? Вы гуглить пробовали?
первая же ссылка на оф.сайт https://docs.microsoft.com/en-us/dot...tframework-4.8 Код:
на что доступ то? На то, чтобы увидеть этот файл в папке? На то, чтобы открыть этот файл на чтение? На то, чтобы открыть этот файл на запись? На то, чтобы удалить этот файл? а вообще, зачем Вам это всё? Делайте с файлом всё, что Вам нужно, просто оберните код в обработку исключений (см. https://docs.microsoft.com/ru-ru/dot...de/exceptions/ ) и, если с файлом/доступом будет что-то не так, ваша обработка сообщит пользователю об ошибке. Всё. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 30.04.2019
Сообщений: 44
|
![]() |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,821
|
![]()
И для это достаточно открыть его с нужными правами и делать то, что надо, ловя ошибки. Все остальное гадание на кофейной гуще.
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 30.04.2019
Сообщений: 44
|
![]()
p51x, каким объектом и методом нужно открыть?
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,821
|
![]()
Любым, какой нравится. Хоть просто FileInfo делайте и проверяйте Exists. Только как вам уже раз 100 говорили - наличие файла, доступ к нему не одно и тоже... да и доступ разный бывает.
|
![]() |
![]() |
![]() |
#9 | |
Пользователь
Регистрация: 30.04.2019
Сообщений: 44
|
![]() Цитата:
Программа должна увидеть, что компьютер выключен и сообщить юзеру: компьютер выключен. Есть в C# готовый инструмент для этого? |
|
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,821
|
![]()
Нет. Т.к. это не возможно определить. Если я выдерну сетевой кабель из того компа - он выключен?
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как проверить существование сетевого диска средствами c# | SEWRUS | C# (си шарп) | 2 | 20.08.2012 09:25 |
Проверить существование файла на сервере | Wicort | JavaScript, Ajax | 8 | 04.05.2012 23:16 |
Проверить существование папки | Stepan575 | Visual C++ | 4 | 17.12.2010 19:02 |
Как проверить существование потока? | John_chek | Общие вопросы Delphi | 3 | 17.01.2008 15:16 |