java samba_SambaJava API

package net.jnas;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.net.MalformedURLException;

import jcifs.Config;

import jcifs.smb.NtlmPasswordAuthentication;

import jcifs.smb.SmbAuthException;

import jcifs.smb.SmbException;

import jcifs.smb.SmbFile;

import jcifs.smb.SmbFileInputStream;

import jcifs.smb.SmbFileOutputStream;

import org.apache.log4j.Logger;public classSambaJavaApi {//jcifs.smb.SmbAuthException: Logon failure: unknown user name or bad password.//jcifs.smb.SmbException: Access is denied.//寫得時候,smb_dir必須是文件名,而不是路徑

private static String smb_dir = "lnas_service/aa/aaa.doc";//"/home/test/share";

private static String password = "888888";private static String user = "lk2";private static String ip = "192.168.4.49";private Logger logger = Logger.getLogger(this.getClass().getName());private String local_tempDir = "E:\\work\\samba\\test\\11.doc";public static voidmain(String[] args) {

SambaJavaApi sa= newSambaJavaApi();

user= "admin";

password= "admin";

sa.uploadViaShare(ip , user, password, smb_dir);

}public voiduploadViaShare(final String ip,final String user,final String password,final String dir)

{

logger.debug("Share(SMB) download!");

String newDir=dir;

String url= "";

FileInputStream fos= null;

SmbFileOutputStream smbIs= null;byte [] buffer = new byte[8192];int readBytes = 0;int totalBytes = 0;if (!dir.endsWith("/")) //directory must end with "/"

newDir = dir+"/";

url= "smb://"+user+":"+password+"@"+ip+""+newDir;

NtlmPasswordAuthentication auth= newNtlmPasswordAuthentication(ip, user, password);long startTime =System.currentTimeMillis();try{

url= "smb://"+ip +"/"+dir;

System.out.println(url);

Config.setProperty("jcifs.netbios.wins", ip);

SmbFile shareDir= newSmbFile(url, auth);

shareDir.connect();//SmbFile shareDir = new SmbFile(url);

if(shareDir.isDirectory())

{

smbIs= newSmbFileOutputStream(shareDir);

fos= new FileInputStream(newFile(local_tempDir));while((readBytes = fos.read(buffer)) > 0)

{

smbIs.write(buffer,0,readBytes);

totalBytes+=readBytes;

}

smbIs.close();

fos.close();long endTime =System.currentTimeMillis();long timeTaken = endTime-startTime;

logger.debug(totalBytes+"bytes downloaded in" + timeTaken/1000 + "seconds at"+ (( totalBytes / 1000 ) / Math.max( 1, ( timeTaken / 1000 ))) + "Kb/sec");

}

}catch(MalformedURLException urle)

{

logger.debug("Incorrect URL format!");

}catch(SmbException smbe) {

smbe.printStackTrace();

logger.debug(this.getClass().getName()+"||"+smbe.getMessage());

}catch(IOException ioe)

{

ioe.printStackTrace();

logger.debug(this.getClass().getName()+"||"+ioe.getMessage());

}finally{try{

smbIs.close();

fos.close();

}catch(Exception smbe)

{

logger.debug(this.getClass().getName()+"||"+smbe.getMessage());

}

}

}public voiddownloadViaShare(final String ip,final String user,final String password,final String dir)

{

logger.debug("Share(SMB) download!");

String newDir=dir;

String url= "";

SmbFile [] fileList= null;

FileOutputStream fos= null;

SmbFileInputStream smbIs= null;byte [] buffer = new byte[8192];int readBytes = 0;int totalBytes = 0;if (!dir.endsWith("/")) //directory must end with "/"

newDir = dir+"/";

url= "smb://"+user+":"+password+"@"+ip+""+newDir;

NtlmPasswordAuthentication auth= newNtlmPasswordAuthentication(ip, user, password);long startTime =System.currentTimeMillis();try{

url= "smb://"+ip +"/"+dir;

System.out.println(url);//final NtlmPasswordAuthentication AUTH = new NtlmPasswordAuthentication("domainname", "username", "password");

Config.setProperty("jcifs.netbios.wins", ip);//Properties props = new Properties();//InputStream in = new SmbFileInputStream(new SmbFile("smb://10.10.1.1:445/rootfolder/path/filename.properties", AUTH));//props.load(in);

SmbFile shareDir= newSmbFile(url, auth);

shareDir.connect();//SmbFile shareDir = new SmbFile(url);

if(shareDir.isDirectory())

{

fileList=shareDir.listFiles();for(int i=0;i

{if(fileList[i].isFile())

{

smbIs= newSmbFileInputStream((SmbFile)fileList[i]);

fos= new FileOutputStream(new File(local_tempDir +File.separator+fileList[i].getName()));while((readBytes = smbIs.read(buffer)) > 0)

{

fos.write(buffer,0,readBytes);

totalBytes+=readBytes;

}

smbIs.close();

fos.close();//break;//logger.debug(fileList[i].getName() + " is downloaded!");//try//{//fileList[i].delete();//}catch(SmbAuthException smbae )//{//logger.debug(fileList[i].getName()+" can not be deleted!");//}

}

}long endTime =System.currentTimeMillis();long timeTaken = endTime-startTime;

logger.debug(totalBytes+"bytes downloaded in" + timeTaken/1000 + "seconds at"+ (( totalBytes / 1000 ) / Math.max( 1, ( timeTaken / 1000 ))) + "Kb/sec");

}

}catch(MalformedURLException urle)

{

logger.debug("Incorrect URL format!");

}catch(SmbException smbe) {

smbe.printStackTrace();

logger.debug(this.getClass().getName()+"||"+smbe.getMessage());

}catch(IOException ioe)

{

ioe.printStackTrace();

logger.debug(this.getClass().getName()+"||"+ioe.getMessage());

}finally{try{

smbIs.close();

fos.close();

}catch(Exception smbe)

{

logger.debug(this.getClass().getName()+"||"+smbe.getMessage());

}

}

}//private void Asasf() {// //TODO Auto-generated method stub//String strprog = "STRING CREATED| ";//debug log string//try {//strprog += "NTLM| ";//NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("username:password");//strprog += "SMB| ";//SmbFile file = new SmbFile("smb:///foldername/filename.txt",auth);//

//strprog += "EXIST| ";//String there = String.valueOf(file.exists());//

//strprog += "View| ";//TextView pp;//pp = (TextView) findViewById(R.id.tv);//pp.setText(there);//

//

//

//} catch (Exception e) {// //TODO Auto-generated catch block//strprog += "ERROR! ";//TextView ll;//ll = (TextView) findViewById(R.id.tv);//

//

//ll.setText(strprog + e.getStackTrace().toString() + " " + e.getMessage() + " " + e.getLocalizedMessage() );//}//}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值