Объект SmbFile не может быть создан кроме с допустимым URL smb . См. Резюме конструктора в http://jcifs.samba.org/src/docs/api/ , а также обсуждение URL-адресов SmbFile вверху.
URL-адреса SmbFile имеют следующий синтаксис:
СМБ://[[[домен]; имя пользователя [: пароль] @] сервер [: порт]/[[доля/[реж /] файл]]]? [[PARAM = значение [param2 = значение2 [...] ]]
Итак, если вы действительно хотите избежать использования потока ввода и использовать copyTo (), вам придется иметь общий SMB-ресурс на вашей локальной машине, на который вы можете указать jCIFS.
Если ваш локальный компьютер является машиной Windows, есть некоторые общие домены, к которым вы могли бы получить доступ, например C $.
Итак, вы можете сделать что-то вроде:
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("domain", "username", "password") //or whatever authentication works on your local machine.
SmbFile myFile = new SmbFile("smb://localhost/C\$/path/to/localfile", auth)
Затем вы можете использовать remoteFile.copyTo (myFile)
.
Если вы не находитесь на хосте Windows, вам нужно будет установить Samba и настроить общий ресурс Samba для подключения к вашей локальной машине ... снова, если вы абсолютно склонны избегать использования inputStreams.