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);//上传文件 } }
需要注意的事项:
以上是基于局域网,且上传文件的目录或者文件夹必须设置为共享模式。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。