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

所属分类: 软件编程 / java 阅读数: 35
收藏 0 赞 0 分享

本文实例为大家分享了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);// 上传文件 
  } 
} 

需要注意的事项:

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

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

更多精彩内容其他人还在看

spring boot 静态资源处理方法

本篇文章主要介绍了spring boot 静态资源处理方法。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详解spring boot 使用application.properties 进行外部配置

这篇文章主要介绍了详解spring boot 使用application.properties 进行外部配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Java实现分页的前台页面和后台代码

这篇文章主要为大家详细介绍了Java实现分页的前台页面和后台代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

详解spring面向切面aop拦截器

spring中有很多概念和名词,比如过滤器、拦截器、aop等。这篇文章主要介绍了详解spring面向切面aop拦截器,有兴趣的可以了解一下。
收藏 0 赞 0 分享

Java easyui树形表格TreeGrid的实现代码

这篇文章主要为大家详细介绍了Java easyui树形表格TreeGrid的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java的NIO与IO的详解及对比

这篇文章主要介绍了Java的NIO与IO的详解及对比的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Java中网络IO的实现方式(BIO、NIO、AIO)介绍

这篇文章主要介绍了Java中网络IO的实现方式(BIO、NIO、AIO)介绍的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Java 敏感信息加密处理

本文主要介绍了Java 敏感信息加密处理的相关知识:1)敏感信息加密处理我们要实现什么;2)敏感信息加密处理我做了些什么;3)敏感信息加密实现方法。具有很好的参考价值,下面跟着小编一起来看下吧
收藏 0 赞 0 分享

详解使用Spring3 实现用户登录以及权限认证

这篇文章主要介绍了详解使用Spring3 实现用户登录以及权限认证,这里整理了详细的代码,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

Java的内存机制详解

本文主要介绍了Java的内存机制的相关知识,具有很好的参考价值,下面跟着小编一起来看下吧
收藏 0 赞 0 分享
查看更多