![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Bogdan1024 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1436 Регистрация: 28.9.2005 Где: Киев Репутация: 5 Всего: 13 |
Пользователю предлагается ввести путь к файлу, в который нужно кое-что сохранить. Файл создаётся. Как проверить корректность пути до создания объекта FileStream? Я проверяю наличие в нём некорректных символов (System.IO.Path.InvalidChars), но этого ж мало. Что ещё можно сделать?
-------------------- ![]() |
|||
|
||||
| Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: 1 Всего: 37 |
ИМХО нужно просто попробовать создать файл.... Зачем выполнять ту проверку, которую потом сделает система...
|
|||
|
||||
| Bogdan1024 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1436 Регистрация: 28.9.2005 Где: Киев Репутация: 5 Всего: 13 |
Файл может быть создан совсем не скоро, и если его не получится создать потом, то будет очень плохо, так что лучше проверить всё сразу.
-------------------- ![]() |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Длину пути надо бы проверить. И write-доступ к директории, например создав там какой-нибудь мелкий файлик и сразу удалив его.
-------------------- ![]() |
|||
|
||||
| Injener |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 6.10.2006 Где: СПб Репутация: нет Всего: 1 |
Зачем делать какие-то мелкие файлики, если первоначальная задача в том и состоит - создать файл. Помойму можно просто сделать обработку исключения и все:
--------------------
Любое дело можно сделать тремя способами:1) правильно2) неправильно3) и так как это делают в армии |
|||
|
||||
| blast99 |
|
|||
![]() сисадмин ![]() Профиль Группа: Участник Сообщений: 134 Регистрация: 3.5.2005 Где: Россия, г. Ставро поль Репутация: нет Всего: 3 |
хм...
Ведь в файловой системе есть еще директории "." и ".." Правда это просто мысль, проверить сейчас не могу - нет студии рядом. --------------------
Зачастую, наши возможности ограничены лишь нашими желаниями. И ничто так не ограничивает желания, как заниженная оценка своих возможностей. |
|||
|
||||
| Bogdan1024 |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1436 Регистрация: 28.9.2005 Где: Киев Репутация: 5 Всего: 13 |
Единственное что можно проверить в длинне пути это что она !=0 Ну неужели в .нет нет способа проверить можно ли создать файл или нет?
Нельзя, я ж сказал почему. Это сообщение отредактировал(а) Bogdan1024 - 6.10.2006, 18:38 -------------------- ![]() |
||||||
|
|||||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
А какие критерии? Просто корректоность имени/пути к фалу? Или же еще и наличие прав на создание файла в этой директории, наличие свободного места и т.п.? Первый вопрос решается простым регулярным выражением (я думаю не будет большего труда его составить). А остальные лучше проверить через try/catch |
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 93 |
Так а что же тебе всё-таки мешает собственно создать и сразу удалить файл? -------------------- Да. Именно так. |
|||
|
||||
| blast99 |
|
|||
![]() сисадмин ![]() Профиль Группа: Участник Сообщений: 134 Регистрация: 3.5.2005 Где: Россия, г. Ставро поль Репутация: нет Всего: 3 |
ivashkanet,
я полога вопрос не только в кооректности ввода пути, но и в кооректности его существования... --------------------
Зачастую, наши возможности ограничены лишь нашими желаниями. И ничто так не ограничивает желания, как заниженная оценка своих возможностей. |
|||
|
||||
| Bogdan1024 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1436 Регистрация: 28.9.2005 Где: Киев Репутация: 5 Всего: 13 |
Точно, если полностью сформулировать что я хочу, то это будет звучать как "Проверить возможность создания файла не создавая файл. Вообще никакой.", сорри что морочу вам голову.
Какой толк создавать файл пускай и там же, где создастся нужный файл? Мне же нужно создать какой-то конкретный файл, а не какой-то в той же директории. А создать файл с правильным названием не круто потому что в этот момент другой экземпляр приложения может захотеть создать этот же файл и он обнаружит что его создать нельзя! Короче, создавать файлы чтобы что-то проверить - это неправильно. -------------------- ![]() |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Ещё она может быть слишком большой. Есть такая константа в винапи, MAX_PATH = 256. -------------------- ![]() |
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 93 |
Комрад, я в шоке А что если в момент времени N ты убедился, что файл создать можно, а к моменту времени M, когда ты захочешь его создать условия изменятся? Надо вообще-то понимать, что твоя задача в общем виде не решима Ты можешь проверить, что в имени файла нет недопустимых символов (два метода Path.GetInvalid ... -- точно не помню).Ты можешь проверить длину пути (хотя MAX_PATH = 256 ИМХО уже неактуально Единственный гарантированный способ -- обратиться к файловой системе и пусть она уже сама ответит. А обратиться к файловой системе -- создать пустой файл. И кстати, а это разве нормальная ситуация, когда два приложения будут радостно перезаписывать один и тот же файл, считая, что всё в порядке? -------------------- Да. Именно так. |
|||
|
||||
| Bogdan1024 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1436 Регистрация: 28.9.2005 Где: Киев Репутация: 5 Всего: 13 |
Точно, ведь условия могут поменяться. Тогда действительно нерешима. Большое спасибо что мне это показал -------------------- ![]() |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |