首页 > 开发 > Java > 正文

java基于jcifs.smb实现远程发送文件到服务器

2024-07-13 10:16:33
字体:
来源:转载
供稿:网友

本文实例为大家分享了java实现远程发送文件到服务器的具体代码,供大家参考,具体内容如下

1.依赖的相关jar包         jcifs-1.3.14.1.jar
2.创建SMB的声明

import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.net.MalformedURLException; import java.net.UnknownHostException;  import jcifs.smb.SmbException; import jcifs.smb.SmbFile; import jcifs.smb.SmbFileOutputStream;  public class SmbUtil {   // 1. 声明属性   private String url = "smb://userName:password@192.168.2.153/mars/";   private SmbFile smbFile = null;   private SmbFileOutputStream smbOut = null;   private static SmbUtil smbUtil = null; // 共享文件协议      private SmbUtil(String url) {     this.url = url;     this.init();   }      // 2. 得到SmbUtil和连接的方法   public static synchronized SmbUtil getInstance(String url) {     if (smbUtil == null)       return new SmbUtil(url);     return smbUtil;   }       // 3.smbFile连接   public void init() {     try {       System.out.println("开始连接...url:" + this.url);       smbFile = new SmbFile(this.url);       smbFile.connect();       System.out.println("连接成功...url:" + this.url);     } catch (MalformedURLException e) {       e.printStackTrace();       System.out.print(e);     } catch (IOException e) {       e.printStackTrace();       System.out.print(e);     }   }      // 4.上传文件到服务器   public int uploadFile(File file) {     int flag = -1;     BufferedInputStream bf = null;     try {       this.smbOut = new SmbFileOutputStream(this.url + "/"           + file.getName(), false);       bf = new BufferedInputStream(new FileInputStream(file));       byte[] bt = new byte[8192];       int n = 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 (SmbException e) {       e.printStackTrace();       System.out.println(e);     } catch (MalformedURLException e) {       e.printStackTrace();       System.out.println(e);     } catch (UnknownHostException e) {       e.printStackTrace();       System.out.println("找不到主机...url:" + this.url);     } catch (IOException e) {       e.printStackTrace();       System.out.println(e);     } finally {       try {         if (null != this.smbOut)           this.smbOut.close();         if (null != bf)           bf.close();       } catch (Exception e2) {         e2.printStackTrace();       }     }      return flag;   }    // 5. 在main方法里面测试   public static void main(String[] args) {     // 服務器地址 格式為 smb://电脑用户名:电脑密码@电脑IP地址/IP共享的文件夹     String remoteUrl = "smb://wangqinghua:wqh123@192.168.2.153/mars/";     String localFile = "F:/开关生产销售企业名录.xls"; // 本地要上传的文件     File file = new File(localFile);     SmbUtil smb = SmbUtil.getInstance(remoteUrl);     smb.uploadFile(file);// 上传文件   } } 

需要注意的事项:

以上是基于局域网,且上传文件的目录或者文件夹必须设置为共享模式。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表