使用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获取远程共享文件的更多相关文章
- [转]C#读写远程共享文件夹
1.在服务器设置一个共享文件夹,在这里我的服务器ip地址是10.200.8.73,共享文件夹名字是share,访问权限,用户名是administrator,密码是11111111. 2.新建一个控制台 ...
- curl获取远程图片存到本地
$url = 'http://sssss/sss/xu0fLo9waqKSTDO7j0kSO41O5Luq3LB6ozUvY4O7OsXUWNicB49fBs8nGYzoqcwGDARQZHpVuic ...
- php 获取远程图片保存到本地
php 获取远程图片保存到本地 使用两个函数 1.获取远程文件 2.把图片保存到本地 /** * 获取远程图片并把它保存到本地 * $url 是远程图片的完整URL地址,不能为空. */ functi ...
- 解析PHP中的file_get_contents获取远程页面乱码的问题【转】
在工作中,遇到一个问题.我需要将一个网址(该网址是一个json数据的接口,即 打开该网址,在浏览器中显示的是json数据),我使用file_get_contents($url),数据是乱码的. 通过查 ...
- php获取远程文件大小
获取本地文件大小filesize()就可以了,但是如何获取远程文件的大小呢? 这里介绍三个方法来获取远程文件的大小. 方法1:get_headers <?php get_headers($url ...
- WSB备份到远程共享文件夹的限制
WSB备份存储类型: 远程共享文件夹: 可以将一次性(临时)备份和计划备份存储在远程共享文件夹上.(将计划备份存储在远程共享文件夹上的功能是 Windows Server 2008 R2 的新增功能. ...
- JCIFS读取远程服务器文件过慢的解决方法
JCIFS读取远程服务器文件过慢的解决方法 发表于3年前(2013-07-12 11:23) 阅读(1174) | 评论(0) // 我要收藏"; var favor_del = &qu ...
- scp命令获取远程文件
一.scp是什么? scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的,可能会稍微影响 ...
- PHP高效获取远程图片尺寸和大小(转)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
随机推荐
- codeigniter框架The URI you submitted has disallowed characters错误解决方法
CI中URI传递参数时,出现:The URI you submitted has disallowed characters.错误 .原因:这是由于uri中存在CI不允许的字符 . 解决办法:在con ...
- 【翻译】ASP.NET MVC 5属性路由(转)
转载链接:http://www.cnblogs.com/thestartdream/p/4246533.html 原文链接:http://blogs.msdn.com/b/webdev/archive ...
- Jetty使用教程(四:23)—Jetty开发指南
二十三.Maven和Jetty 这一章节将说明如何通过Maven管理Jetty和使用Jetty的Maven插件. 23.1 使用Maven Apache Maven是一个款软件项目管理工具.基于项目对 ...
- linq in not in
class A { public int B { get; set; } public string C { get; set; } } class Program { static void Mai ...
- checkedListBox
checkedListBox一键删除多个选中items private void button3_Click(object sender, EventArgs e) { ; i < checke ...
- Python for Infomatics 第12章 网络编程三(译)
注:文章原文为Dr. Charles Severance 的 <Python for Informatics>.文中代码用3.4版改写,并在本机测试通过. 12.5 HTML分析和网页抓取 ...
- ZeroMQ接口函数之 :zmq_msg_close – 释放一个ZMQ消息
ZeroMQ 官方地址 :http://api.zeromq.org/4-2:zmq_msg_close zmq_msg_close(3) ØMQ Manual - ØMQ/3. ...
- Linux安装软件时缺少依赖包的简单较完美解决方法!
大家在linux下源码安装时,有木有经常碰到缺少这个包那个包的,然后不知所措?看到最近有几个筒子安装thrift,安装python因缺少依赖包而进行不下去了.我用的是红帽,装系统的时候习惯把所有的有的 ...
- scrapy爬虫笔记(三)------写入源文件的爬取
开始爬取网页:(2)写入源文件的爬取 为了使代码易于修改,更清晰高效的爬取网页,我们将代码写入源文件进行爬取. 主要分为以下几个步骤: 一.使用scrapy创建爬虫框架: 二.修改并编写源代码,确定我 ...
- 新手程序员随笔2——初识html、css和javascript
翻看博客,发现好久木有发blog了.纠其原因,一则是近来工作上卡到了一个编程难题,我是一个单线程的小猿,当我手头有事情做的时候,我不想分心去做其它事情,如写blog.二则是我个人的写作能力不佳,想到写 ...