| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Корректность названия файла |
| Автор: Bogdan1024 6.10.2006, 16:18 |
| Пользователю предлагается ввести путь к файлу, в который нужно кое-что сохранить. Файл создаётся. Как проверить корректность пути до создания объекта FileStream? Я проверяю наличие в нём некорректных символов (System.IO.Path.InvalidChars), но этого ж мало. Что ещё можно сделать? |
| Автор: Sartorius 6.10.2006, 16:30 |
| ИМХО нужно просто попробовать создать файл.... Зачем выполнять ту проверку, которую потом сделает система... |
| Автор: Bogdan1024 6.10.2006, 17:02 |
| Файл может быть создан совсем не скоро, и если его не получится создать потом, то будет очень плохо, так что лучше проверить всё сразу. |
| Автор: mr.DUDA 6.10.2006, 18:27 |
| Длину пути надо бы проверить. И write-доступ к директории, например создав там какой-нибудь мелкий файлик и сразу удалив его. |
| Автор: Injener 6.10.2006, 18:33 | ||
Зачем делать какие-то мелкие файлики, если первоначальная задача в том и состоит - создать файл. Помойму можно просто сделать обработку исключения и все:
|
| Автор: blast99 6.10.2006, 18:36 |
| хм... Ведь в файловой системе есть еще директории "." и ".." Правда это просто мысль, проверить сейчас не могу - нет студии рядом. |
| Автор: Bogdan1024 6.10.2006, 18:36 | ||||||
Единственное что можно проверить в длинне пути это что она !=0 Ну неужели в .нет нет способа проверить можно ли создать файл или нет?
Нельзя, я ж сказал почему. |
| Автор: Дрон 6.10.2006, 19:32 | ||
Так а что же тебе всё-таки мешает собственно создать и сразу удалить файл? |
| Автор: blast99 6.10.2006, 19:36 |
| ivashkanet, я полога вопрос не только в кооректности ввода пути, но и в кооректности его существования... |
| Автор: Bogdan1024 6.10.2006, 20:40 |
| Точно, если полностью сформулировать что я хочу, то это будет звучать как "Проверить возможность создания файла не создавая файл. Вообще никакой.", сорри что морочу вам голову. Какой толк создавать файл пускай и там же, где создастся нужный файл? Мне же нужно создать какой-то конкретный файл, а не какой-то в той же директории. А создать файл с правильным названием не круто потому что в этот момент другой экземпляр приложения может захотеть создать этот же файл и он обнаружит что его создать нельзя! Короче, создавать файлы чтобы что-то проверить - это неправильно. |
| Автор: mr.DUDA 7.10.2006, 11:47 | ||
Ещё она может быть слишком большой. Есть такая константа в винапи, MAX_PATH = 256. |
| Автор: Дрон 7.10.2006, 11:59 | ||
Комрад, я в шоке А что если в момент времени N ты убедился, что файл создать можно, а к моменту времени M, когда ты захочешь его создать условия изменятся? Надо вообще-то понимать, что твоя задача в общем виде не решима Ты можешь проверить, что в имени файла нет недопустимых символов (два метода Path.GetInvalid ... -- точно не помню).Ты можешь проверить длину пути (хотя MAX_PATH = 256 ИМХО уже неактуально Единственный гарантированный способ -- обратиться к файловой системе и пусть она уже сама ответит. А обратиться к файловой системе -- создать пустой файл. И кстати, а это разве нормальная ситуация, когда два приложения будут радостно перезаписывать один и тот же файл, считая, что всё в порядке? |
| Автор: Bogdan1024 7.10.2006, 13:20 | ||||
Точно, ведь условия могут поменяться. Тогда действительно нерешима. Большое спасибо что мне это показал |