Могу ли я использовать путь к файлу NIO2 для схем нелокальной файловой системы

Я использовал пути к файлам NIO2 для доступа к ресурсам локальной файловой системы. Однако, когда я пытаюсь использовать тот же API для нелокальных файловых систем, я получаю следующее исключение:

Exception in thread "main" java.nio.file.FileSystemNotFoundException: 
    Provider "http" not installed. Code snippet can be found below

Path toFileSystem= Paths.get(new URI("http://www.wiley.com"));

Я хотел бы подтвердить, что есть способ добавить http в FileSystemProvider? или есть хорошее руководство, которому я могу следовать, чтобы получить доступ к нелокальным схемам через NIO2 API?


person Beenish Sajjad    schedule 28.01.2018    source источник


Ответы (1)


Я не думаю, что есть поставщик файловой системы HTTP, который поставляется с библиотекой std. Это связано с тем, что на другом конце существуют разные способы структурирования «файловой системы», а разумного значения по умолчанию нет.

Эта ссылка довольно подробно объясняет материал NIO: https://docs.oracle.com/javase/tutorial/essential/io/fileio.html .

На самом деле вы строите этот Path правильно, но проблема в том, что у вас нет FileSystemProvider, зарегистрированного в схеме http.

Хорошая новость: вы можете создать свой собственный: https://docs.oracle.com/javase/7/docs/technotes/guides/io/fsp/filesystemprovider.html

person Neil Locketz    schedule 28.01.2018
comment
Правильно, JDK имеет 3 встроенных поставщика файловой системы (file, jrt и jar). Если у кого-то есть поставщик файловой системы для HTTP, его необходимо установить по пути к классу (или пути к модулю), чтобы он загружался как реализация FileSystemProvider. - person Alan Bateman; 27.06.2018