2014-10-24 3 views
0

При запуске моего приложения Java из сетевой папки я столкнулся с исключением IllegalArgumentException, которое гласит: URI имеет компонент полномочий.Создайте новый файл (URI) с полномочным компонентом

Я отлаживал и обнаружил, что проблема заключалась в том, что я создавал новый файл, передавая в URI с помощью компонента полномочий. Раньше я никогда не сталкивался с этой проблемой, потому что я всегда запускал приложение локально, и не было никакого компонента полномочий.

URI uri = new URI("...network path...//myFile"); 

Это выдает ошибку:

File file = new File(uri); 

Это работает:

File file = new File(uri.toString()); 

Я вижу, что внутри файла (Uri) конструктор не допустит URI с компонентом полномочий , Может ли кто-нибудь объяснить, почему? и почему мне разрешено создавать файл для String?

Спасибо!

+0

'Файл (URI uri)' является допустимым конструктором для файла ... –

+1

Из документов, а также может помочь: Параметры: uri - Абсолютный иерархический URI со схемой, равной «файлу», непустой компонент пути и неопределенные полномочия, запросы и фрагменты –

+0

Да, я знаю, что файл может принимать URI, и я знаю, что URI не может иметь полномочия. Я пытаюсь понять, почему это так. И почему создается файл со строковым путем, эквивалентным работе URI? – MonkBen

ответ

0

Класс File предназначен для ссылок на локальные файлы. Он предназначен для использования с такими классами, как FileInputStream, которые не выполняют сетевой ввод-вывод и, следовательно, не могут читать удаленные файлы.

Смежные вопросы