Challenge of the day: publish a file to a microsoft shared directory and then re-read it.
Windows OSes rely on the SAMBA protocol to share files and directories. Thanks to the JCIFS project( http://jcifs.samba.org/), an open source library, we can access theses kind of shares via java.
Under linux, we could have performed it a the shell level using the SMBclient command line utility.
The example is pretty self explanatory, just remember to add jcifs-1.2.25.jar to your classpath and to adapt the authentication parameters to your real login in the url.
import jcifs.smb.*; public class SMBClient { public static void main(String[] args) { try{ // jcifs.Config.setProperty( "jcifs.netbios.wins", "192.168.1.220" ); //smb://[[[domain;]username[:password]@]server[:port]/[[share/[dir/]file]][?[param=value[param2=value2[...]]] String url="smb://domain;user_name:user_password@server_name/directory/test_file.txt"; String content="hello !"; SmbFileOutputStream out = new SmbFileOutputStream(url); out.write(content.getBytes()); System.out.println("File written, now trying to re-read it:"); SmbFileInputStream in = new SmbFileInputStream(url); byte[] b = new byte[10000]; int n; while(( n = in.read( b )) > 0 ) { System.out.write( b, 0, n ); } }catch(Exception e){ System.out.println(e); } } } |
Thanks to Cyril for the challenge 🙂 and to the forums of developpez.net (in french) for an example.