jueves 8 de enero de 2009

Usar el protocolo samba con jCIFS

En el proyecto donde estoy colaborando hay una aplicación que necesita escribir archivos en un directorio compartido en un servidor windows por lo que necesitamos usar el protocolo CIFS/SMB, bien para esto tenemos la librería jCIFS que es una implementación de dicho protocolo y esta hecha en java completamente además de que es opensource.

También es posible usar esta librería para compartir recursos entre maquinas windows y máquinas unix que cuenten con el servicio samba.

Por ejemplo en este metodo escribimos un archivo en la carpeta compartida por otra maquina:

private boolean escribeArchivo(String encodedMessage, String nombreArchivo)
throws SmbException, MalformedURLException, UnknownHostException, IOException{

boolean exitoArchivo = false;

//String url = "smb://127.0.0.1/compartida/"+ nombreArchivo ;
//String url = "smb://usuario:usuario@127.0.0.1/compartida/"+ nombreArchivo ;
String url = "smb://"+ USR_SERVIDOR +":"+ PASS_SERVIDOR +"@"
+ URL_SERVIDOR + nombreArchivo + EXT_ARCHIVO;

try{
SmbFileOutputStream out = new SmbFileOutputStream(url, false);

out.write(encodedMessage.getBytes());
// encodeMessage es el texto que contiene el archivo
// aqui podemos enviar los bytes de algun archivo de la maquina local

out.close();

exitoArchivo = true;

System.out.println("generado " + url );
} catch(IOException ex){
exitoArchivo = false;
} finally{
return exitoArchivo;
}
}


Para borrar un archivo en la carpeta compartida:

private void borraArchivo(String archivo) throws SmbException,
MalformedURLException, UnknownHostException{

//String url = "smb://127.0.0.1/compartida/"+ nombreArchivo ;
//String url = "smb://usuario:usuario@127.0.0.1/compartida/"+ nombreArchivo ;
String url = "smb://"+ USR_SERVIDOR +":"+ PASS_SERVIDOR +"@"+ URL_SERVIDOR ;
String rutArchivo = url + archivo;
SmbFile sFile = new SmbFile(rutArchivo);
if(sFile.exists())
sFile.delete();
}



Para descargar la libreria y un poco de mas informacion pues sigan este link
http://jcifs.samba.org/

1 comentarios:

Monserrath dijo...

Mil graciaaas por tu aportación, actualmente estoy trabajando con un proyecto similar! Me gustaria contactarte para ke me kompartieras más sobre este articulo. mi correo es
argiva2nero@gmail.com, por favor escribeme!. Me urge apender jcifs. Grax