java基于jcifs.smb实现远程发送文件到服务器
1、服务器指定共享文件夹

1.1、验证服务器共享文件夹本地可以访问:

2、导入依赖的相关jar包 jcifs-1.3.**.jar:
<dependency>
<groupId>jcifs</groupId>
<artifactId>jcifs</artifactId>
<version>1.3.17</version>
</dependency>
3.创建java类:SmbUtil
并粘贴下面的代码:
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://administrator:123456@10.8.66.22/mars/";
String localFile = "C:\\Users\\Administrator\\Desktop\\***.txt"; // 本地要上传的文件
File file = new File(localFile);
SmbUtil smb = SmbUtil.getInstance(remoteUrl);
smb.uploadFile(file);// 上传文件
}
}
java基于jcifs.smb实现远程发送文件到服务器的更多相关文章
- 【代码笔记】Java深入学习——实现客户端发送文件到服务器的文件传输
Server.java package com.huaxin.lesson02; import java.io.FileOutputStream; import java.io.InputStream ...
- sshpass 指定密码远程 ssh 到服务器 或者 scp 发送文件到服务器
在操作linux时,虽然可以对linux配置免秘钥登录,但是在配置免密码登录之前,是需要登录到其他节点主机的,这里提供一种类似ssh的方式,可以在命令后面加上相应的参数来设置你将要登录的远程主机的密码 ...
- 利用Socket远程发送文件
思想: 1.注意使用两个通道,一个普通对象通信通道,另一个纯净的文件字节流通道 2.利用通信通道发送文件请求,新建字节流通道,开始发送文件
- jquery用formada发送文件到服务器
var formdata = new FormData(); formdata.append("file", $("#Input")[0].files[0]); ...
- 远程发送文件失败(scp)
出现这种情况的原因是之前保存过192.168.210.134的密钥. 碰到这种情况进行如下操作: ①查看隐藏文件 [root@localhost ~]# ls -a .ssh ②切换到 .ssh ...
- PHP实现远程下载文件到本地
PHP实现远程下载文件到本地 投稿:hebedich 字体:[增加 减小] 类型:转载 经常写采集器发布接口需要使用到远程附件的功能,所以自己写了一个PHP远程下载文件到本地的函数,一般情况下已经 ...
- java 利用SMB读取远程文件
package com.yss.test.FileReadWriter; import java.io.BufferedInputStream; import java.io.BufferedO ...
- 通过jcifs.jar 创建远程文件和文件夹
package com.project.remoteUrl;import java.io.File;import java.io.InputStream;import java.io.OutputSt ...
- Java基于Socket文件传输示例(转)
最近需要进行网络传输大文件,于是对基于socket的文件传输作了一个初步的了解.在一位网友提供的程序基础上,俺进行了一些加工,采用了缓冲输入/输出流来包装输出流,再采用数据输入/输出输出流进行包装,加 ...
随机推荐
- 操作系统 (OS)
1. 操作系统(Operation System,OS) 操作系统作为接口的示意图 没有安装操作系统的计算机,通常被称为 裸机 如果想在 裸机 上运行自己所编写的程序,就必须用机器语言书写程序 如果计 ...
- dl pthread m库的含义
dl:dlopen dlerror dlclose dlsym等函数的库 m:math.h中声明的库函数,比如log10等 pthread:线程建立函数 参考: Linux 编译C程序遇到依赖libm ...
- MySQL5.7安装详解及常见安装问题解决
数据库安装 Python开发使用mysql数据库5.5版本以上(django2.0之后放弃mysql5.5之前的支持),在mysql版本当中5.7之前的版本都有.exe或者.msi的可执行安装文件,但 ...
- Til the Cows Come Home(Dijkstra)
Dijkstra (迪杰斯特拉)最短路算法,算是模板 POJ - 2387 #include<iostream> #include<algorithm> #include< ...
- Java 基础 enum枚举类 的创建/使用/接口继承 ,以及手动创建枚举类的对象为:public static final
笔记: import java.lang.*; /**一:枚举类 : enum Season implements info { s1(),s2(),s3(),s4() }; //s1--s4 放在S ...
- JavaScript中数组的排序——sort()
数组排序sort() sort()方法使数组中的元素按照一定的顺序排列. arrayObject.sort(方法函数) 1.如果不指定<方法函数>,则按unicode码顺序排列. 2.如果 ...
- java判断文件是否为图片
/** * 判断文件是否为图片<br> * <br> * @param pInput 文件名<br> * @param pImgeFlag 判断具体文件类型< ...
- 2019HDU多校第三场F Fansblog——威尔逊定理&&素数密度
题意 给定一个整数 $P$($10^9 \leq p\leq 1^{14}$),设其前一个质数为 $Q$,求 $Q! \ \% P$. 分析 暴力...说不定好的板子能过. 根据威尔逊定理,如果 $ ...
- Codeforces Round #584 E2. Rotate Columns (hard version)
链接: https://codeforces.com/contest/1209/problem/E2 题意: This is a harder version of the problem. The ...
- The 10th Shandong Provincial Collegiate Programming Contest
目录 Contest Info Solutions A. Calandar B. Flipping Game C. Wandering Robot D. Game on a Graph E. BaoB ...