An SmbFile object can't be constructed except with a valid smb URL. See the Constructor Summary at http://jcifs.samba.org/src/docs/api/, along with the discussion about SmbFile URLs at the top.
SmbFile URLs have the following syntax: smb://[[[domain;]username[:password]@]server[:port]/[[share/[dir/]file]]][?[param=value[param2=value2[...]]]
So, if you really want to avoid using the input stream and use copyTo(), you'll have to have an SMB share on your local machine that you can point jCIFS to.
If your local machine is a Windows machine, there are some default shares that you might be able to access, like C$.
So, you could do something like:
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)
Then you could use remoteFile.copyTo(myFile)
.
If you're not on a Windows host, you'll have to install Samba and setup a Samba share to connect to on your local machine... again, if you're absolutely bent on avoiding using inputStreams.