Использование протокола SMB в URL-адресе при использовании библиотеки JCIFS на Android

Я использую JCIFS в своем новом проекте Android. Каким-то образом я решил использовать класс URL для обобщения пути к файлу (чтобы позже я мог добавить больше протокола). Что я сделал, как показано ниже

URL url = new URL("smb://192.168.1.1/filepath");

И тогда возникает исключение java.net.MalformedURLException.

Exception in thread "main" java.net.MalformedURLException: unknown protocol: smb
    at java.net.URL.<init>(URL.java:184)
    at java.net.URL.<init>(URL.java:127)

Изучив Часто задаваемые вопросы по JCIFS, я обнаружил, что мне нужно зарегистрировать протокол перед использованием класса. . Однако я действительно не знаю, как это сделать в Android. Я думаю, что библиотека уже делает это, но не на Android.

И что я должен делать ?


person mr_tawan    schedule 22.07.2012    source источник
comment
Куда вы поместили файл jcifs Jar? Он должен находиться в правильном пути к классам для загрузки обработчика.   -  person medopal    schedule 22.07.2012
comment
Я поместил файл jar в каталог /libs проекта, который, я думаю, отсутствует в пути к классам. И я думаю, что Android обрабатывает путь к классам иначе, чем обычное приложение Java.   -  person mr_tawan    schedule 06.08.2012


Ответы (2)


Я только что видел использование в справочнике JCIFS, в справочнике SmbFile.

При использовании класса java.net.URL с URL-адресами 'smb://' необходимо сначала вызвать статический jcifs.Config.registerSmbURLHandler(); метод. Это необходимо для регистрации обработчика протокола SMB.

Поэтому я добавляю этот вызов, и он работает правильно.

person mr_tawan    schedule 05.08.2012
comment
Предыдущая ссылка недоступна, используйте jcifs.samba .org/src/docs/api/jcifs/ вместо этого - person jneira; 15.12.2016

Не используйте объект URL. Передайте URL-адрес непосредственно в конструктор SmbFile. Например:

SmbFile file = new SmbFile("smb://192.168.1.1/filepath");

Затем вы можете делать почти все, что вы можете делать с обычным файлом.

person 11101101b    schedule 01.08.2012
comment
Причина, по которой я использую объект URL, заключается в том, что я хочу поддерживать и другой протокол (и локальную файловую систему). Использование URL может сделать его более абстрактным среди протоколов. Также я хочу использовать объект Serilizable для передачи между действиями, которых нет в SmbFile. - person mr_tawan; 06.08.2012