使用JCIFS获取远程共享文件
-
package com.jadyer.util;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;
/**
* 使用JCIFS获取远程共享文件
* @see 关于jcifs的介绍,网上有一大片,这里谈到的远程文件指的是网络共享文件
* @see JCIFS官网为http://jcifs.samba.org/,以后准备写成一个工具类,故命名JCifsUtil
* @see 据网络所说:JCIFS比较适用于单域环境,多域环境就会很麻烦(本人尚未验证),详见http://jusescn.iteye.com/blog/757475
* @create Apr 22, 2013 11:48:15 PM
* @author 玄玉<http://blog.csdn.net/jadyer>
*/
public class JCifsUtil {
public static void main(String[] args) {
getRemoteFile("jadyer", "myJavaSE", "192.168.8.2/我的测试用例/", "D:/mylocal/");
//getRemoteFile("jadyer", "myJavaSE", "192.168.8.2/我的测试用例/平安银行接入.et", "D:/mylocal/");
System.out.println(System.getenv("JAVA_HOME"));
}
/**
* 拷贝远程文件到本地目录
* @param smbFile 远程SmbFile
* @param localDirectory 本地存储目录,本地目录不存在时会自动创建,本地目录存在时可自行选择是否清空该目录下的文件,默认为不清空
* @return boolean 是否拷贝成功
*/
private static boolean copyRemoteFile(SmbFile smbFile, String localDirectory) {
SmbFileInputStream in = null;
FileOutputStream out = null;
try {
File[] localFiles = new File(localDirectory).listFiles();
if(null == localFiles){
//目录不存在的话,就创建目录
//new File("D:/aa/bb.et").mkdirs()会在aa文件夹下创建一个名为bb.et的文件夹
new File(localDirectory).mkdirs();
}else if(localFiles.length > 0){
// for(File file : localFiles){
// //清空本地目录下的所有文件
// //new File("D:/aa/bb.et").delete()会删除bb.et文件,但aa文件夹还存在
// file.delete();
// }
}
in = new SmbFileInputStream(smbFile);
out = new FileOutputStream(localDirectory + smbFile.getName());
byte[] buffer = new byte[1024];
int len = -1;
while((len=in.read(buffer)) != -1){
out.write(buffer, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
if(null != out){
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(null != in){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return true;
}
/**
* 获取远程文件
* @param remoteUsername 远程目录访问用户名
* @param remotePassword 远程目录访问密码
* @param remoteFilepath 远程文件地址,该参数需以IP打头,如'192.168.8.2/aa/bb.java'或者'192.168.8.2/aa/',如'192.168.8.2/aa'是不对的
* @param localDirectory 本地存储目录,该参数需以'/'结尾,如'D:/'或者'D:/mylocal/'
* @return boolean 是否获取成功
*/
public static boolean getRemoteFile(String remoteUsername, String remotePassword, String remoteFilepath, String localDirectory) {
boolean isSuccess = false;
if(remoteFilepath.startsWith("/") || remoteFilepath.startsWith("\\")){
return isSuccess;
}
if(!(localDirectory.endsWith("/") || localDirectory.endsWith("\\"))){
return isSuccess;
}
try {
SmbFile smbFile = new SmbFile("smb://" + remoteUsername + ":" + remotePassword + "@" + remoteFilepath);
if(smbFile.isDirectory()){
for(SmbFile file : smbFile.listFiles()){
isSuccess = copyRemoteFile(file, localDirectory);
}
}else if(smbFile.isFile()){
isSuccess = copyRemoteFile(smbFile, localDirectory);
}
} catch (Exception e) {
e.printStackTrace();
}
return isSuccess;
}
}
使用JCIFS获取远程共享文件相关推荐
- 剑走偏锋--使用WMI获取远程计算机进程程序集中查毒病毒打造内网安全环境
剑走偏锋-使用WMI获取远程计算机进程程序 集中查毒病毒打造内网安全环境 作者:高玉涵 时间:2019.04.1815:45 博客:blog.csdn.net/cg_i 作者背景环境参见: <由 ...
- nodejs读取远程共享文件
最近接到了一个任务,要在nodejs后台读取一个非本地的远程文件,经过一阵研究,找到了方法.发现网上对这件事的文章比较少,就写了一下方法. 1.将一个远程电脑上的文件夹设定为共享文件夹.在win10上 ...
- 获取远程网卡MAC地址
出自: http://blog.joycode.com/liuhuimiao/ 朋友mingal急问我有关获取远程网卡MAC地址的ASP.net实现.我一开始以为是获取本机MAC地址,说了几种方法给他 ...
- PHP 通过fsockopen函数获取远程网页源码
最新PHP 通过fsockopen函数获取远程网页源码 以下是三零网为大家整理的最新PHP 通过fsockopen函数获取远程网页源码的文章,希望大家能够喜欢! 通过该函数可以获取指定端口的页面源码, ...
- 获取远程数据本地缓存到PHP数组
为什么80%的码农都做不了架构师?>>> <?php /* 本地缓存文件名称 */ $tempfile = "sms.php"; $smsdata = ...
- 解决paramiko获取远程脚本延时返回数据的问题
解决paramiko获取远程脚本延时返回数据的问题 参考文章: (1)解决paramiko获取远程脚本延时返回数据的问题 (2)https://www.cnblogs.com/liushi-Oscar ...
- 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取 远程 目标进程 中的 /system/lib/libc.so 动态库中的 mmap 函数地址 )
文章目录 一.获取 远程 目标进程 中的 /system/lib/libc.so 动态库中的 mmap 函数地址 二.从 /proc/pid/maps 文件中获取 指定 进程 中的 /system/l ...
- java 读取 远程文件_利用JAVA获取远程文件及使用断点续传 供学习者使用
闲来没事,就做做,程序还是要多写才好@ 原理不说,文件方面及I/O方面,去BAIDU一下就知道,断点续传的原理也很简单,就是在原来已经下载的基础之上继续下载就可以了,用到了这么关键的一句:urlc.s ...
- 用WMI获取远程机器操作系统的详细信息
使用WMI获取远程机器操作系统的详细信息 大杂烩-.NET 代码主题部分的OperatingSystem类,是使用工具(Management (WMI) Extensions for Visual S ...
最新文章
- selenium+Headless Chrome实现不弹出浏览器自动化登录
- LAMP编译安装(一)——安装Apache2.4
- linux上java解加密(AES/CBC)异常:java.lang.SecurityException: JCE cannot authenticate the provider BC办法
- 用w32tm设置服务器时间同步
- 【Elasticsearch】玩转 Elasticsearch 7.8 的 SQL 功能
- 工作流牛人 Jan Mendling
- mysql 所有外键_mysql中的外键
- AT指令集及其通信测试方式
- 点餐小程序购物车效果实现
- webrtc rtt 计算
- 雏鸟(1)--Foundation
- 用python模拟一个文本浏览器来抓取网页
- 下载学习通上没有下载权限的文件
- MFC中图片背景透明色问题
- SpringMVC(7)——类型转换器Converter
- 18 What is the __dict__.__dict__attribute of a Python class
- babylonjs 分部加载模型_17 Babylonjs入门进阶 使用场景加载器加载glTF,OBJ,STL模型...
- 【PyTorch基础教程30】DSSM双塔模型(线上召回 | 模型更新)
- miniui实现表格中行的上下移动
- 金仓数据库KingbaseES安全指南--5.2. 数据完整性保护
热门文章
- showModalDialog 页面上GridView的分页问题
- varchar和nvarchar的区别
- RMAN-03002、RMAN-06059
- 06-老马jQuery教程-jQuery高级
- AMF3通讯协议实例
- slice,substr和substring的区别
- jQuery Ajax 实例 ($.ajax、$.post、$.get)
- Codeigniter 利用加密Key(密钥)的对象注入漏洞
- configure,pkg-config和PKG_CONFIG_PATH
- 【中文】Joomla1.7扩展介绍之Kunena(强大的论坛)