当前位置: 首页 > 工具软件 > jCIFS > 使用案例 >

jcifs文件上传到另一台服务器,使用JCIFS获取远程共享文件

邹胜泫
2023-12-01

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 玄玉

*/

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;

}

}

[转]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高效获取远程图片尺寸和大小&lpar;转&rpar;

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 ...

随机推荐

linux下QT Creator常见错误及解决办法

最近因为在做一个关于linux下计算机取证的小项目,需要写一个图形界面,所以想到了用QT来写,选用了linux下的集成开发环境QT Creator5.5.1,但刚刚安装好,竟然连一个"hel ...

immutableJS一些API

原生js转换为immutableData Immutable.fromJS([1,2]) // immutable的 list Immutable.fromJS({a: 1}) // immutabl ...

zepto--toggle函数

学习zepto源码时,发现一个很佩服的写法. 关键点在三元选择符. 首先,假定settings是有传入参数的,此时settings会进行隐式强制类型转换为布尔值,如果为真,元素显示,如果为假,元素隐藏 ...

PowerDesigner中创建Oracle表全过程记录

本文记录如何在PowerDesigner中创建一个Oracle结构的表. 在进行本文阅读之前,需要在PowerDesigner进行 DBMS修改,DataBase创建,用户创建,表空间创建.   1. ...

redis 简介

Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集 合和有序集合.支持在服务器端计算集合的并,交和补集(diff ...

Zendframework application 引导过程

Applications 会期望用户提供一个配置好的ServiceManager.提供以下服务: 1.EventManager 2.ModuleManager 3.Request 4.Response ...

mac 功能修改。。。。

个人表示 Mac 下的 Spotlight 搜索功能确实是个鸡肋,安装 QuickSilver 才是王道!所以我个人就把 Spotlight 关闭掉了.方法很简单,还是要用到 “终端” 工具. 在 “ ...

一个周末掌握IT前沿技术之node&period;js篇

一个周末掌握IT前沿技术之node.js篇 http://ittechnical.sinaapp.com/node-js-and-restful-api/ NodeJS入门  http://www.n ...

上海MVP见面会

很愉快,很有收获的一次见面!

vue项目在IE9下报错 &OpenCurlyDoubleQuote;requestAnimationFrame”未定义

在main.js里面添加: (function () { var lastTime = 0; var vendors = ['ms', 'moz', 'webkit', 'o']; for (var ...

 类似资料: