java基于jcifs.smb实现远程发送文件到服务器
本文实例为大家分享了java实现远程发送文件到服务器的具体代码,供大家参考,具体内容如下
1.依赖的相关jar包 jcifs-1.3.14.1.jar
2.创建SMB的声明
importjava.io.BufferedInputStream;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.IOException;
importjava.net.MalformedURLException;
importjava.net.UnknownHostException;
importjcifs.smb.SmbException;
importjcifs.smb.SmbFile;
importjcifs.smb.SmbFileOutputStream;
publicclassSmbUtil{
//1.声明属性
privateStringurl="smb://userName:password@192.168.2.153/mars/";
privateSmbFilesmbFile=null;
privateSmbFileOutputStreamsmbOut=null;
privatestaticSmbUtilsmbUtil=null;//共享文件协议
privateSmbUtil(Stringurl){
this.url=url;
this.init();
}
//2.得到SmbUtil和连接的方法
publicstaticsynchronizedSmbUtilgetInstance(Stringurl){
if(smbUtil==null)
returnnewSmbUtil(url);
returnsmbUtil;
}
//3.smbFile连接
publicvoidinit(){
try{
System.out.println("开始连接...url:"+this.url);
smbFile=newSmbFile(this.url);
smbFile.connect();
System.out.println("连接成功...url:"+this.url);
}catch(MalformedURLExceptione){
e.printStackTrace();
System.out.print(e);
}catch(IOExceptione){
e.printStackTrace();
System.out.print(e);
}
}
//4.上传文件到服务器
publicintuploadFile(Filefile){
intflag=-1;
BufferedInputStreambf=null;
try{
this.smbOut=newSmbFileOutputStream(this.url+"/"
+file.getName(),false);
bf=newBufferedInputStream(newFileInputStream(file));
byte[]bt=newbyte[8192];
intn=bf.read(bt);
while(n!=-1){
this.smbOut.write(bt,0,n);
this.smbOut.flush();
n=bf.read(bt);
}
flag=0;
System.out.println("文件传输结束...");
}catch(SmbExceptione){
e.printStackTrace();
System.out.println(e);
}catch(MalformedURLExceptione){
e.printStackTrace();
System.out.println(e);
}catch(UnknownHostExceptione){
e.printStackTrace();
System.out.println("找不到主机...url:"+this.url);
}catch(IOExceptione){
e.printStackTrace();
System.out.println(e);
}finally{
try{
if(null!=this.smbOut)
this.smbOut.close();
if(null!=bf)
bf.close();
}catch(Exceptione2){
e2.printStackTrace();
}
}
returnflag;
}
//5.在main方法里面测试
publicstaticvoidmain(String[]args){
//服務器地址格式為smb://电脑用户名:电脑密码@电脑IP地址/IP共享的文件夹
StringremoteUrl="smb://wangqinghua:wqh123@192.168.2.153/mars/";
StringlocalFile="F:/开关生产销售企业名录.xls";//本地要上传的文件
Filefile=newFile(localFile);
SmbUtilsmb=SmbUtil.getInstance(remoteUrl);
smb.uploadFile(file);//上传文件
}
}
需要注意的事项:
以上是基于局域网,且上传文件的目录或者文件夹必须设置为共享模式。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。