java 利用SMB读取远程文件
2016-03-24 13:45
441 查看
Java代码
package com.yss.test.FileReadWriter;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;
import jcifs.smb.SmbFileOutputStream;
public class RemoteAccessData {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
smbGet1("smb://192.168.75.204/test/新建 文本文档.txt" );
smbGet("smb://192.168.75.204/test/新建 文本文档.txt" , "e:/" );
}
/**
* 方法一:
*
* @param remoteUrl
* 远程路径 smb://192.168.75.204/test/新建 文本文档.txt
* @throws IOException
*/
public static void smbGet1(String remoteUrl) throws IOException {
SmbFile smbFile = new SmbFile(remoteUrl);
int length = smbFile.getContentLength(); // 得到文件的大小
byte buffer[] = new byte [length];
SmbFileInputStream in = new SmbFileInputStream(smbFile);
// 建立smb文件输入流
while ((in.read(buffer)) != - 1 ) {
System.out.write(buffer);
System.out.println(buffer.length);
}
in.close();
}
// 从共享目录下载文件
/**
* 方法二:
* 路径格式:smb://192.168.75.204/test/新建 文本文档.txt
* smb://username:password@192.168.0.77/test
* @param remoteUrl
* 远程路径
* @param localDir
* 要写入的本地路径
*/
public static void smbGet(String remoteUrl, String localDir) {
InputStream in = null ;
OutputStream out = null ;
try {
SmbFile remoteFile = new SmbFile(remoteUrl);
if (remoteFile == null ) {
System.out.println("共享文件不存在" );
return ;
}
String fileName = remoteFile.getName();
File localFile = new File(localDir + File.separator + fileName);
in = new BufferedInputStream( new SmbFileInputStream(remoteFile));
out = new BufferedOutputStream( new FileOutputStream(localFile));
byte [] buffer = new byte [ 1024 ];
while (in.read(buffer) != - 1 ) {
out.write(buffer);
buffer = new byte [ 1024 ];
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 向共享目录上传文件
public static void smbPut(String remoteUrl, String localFilePath) {
InputStream in = null ;
OutputStream out = null ;
try {
File localFile = new File(localFilePath);
String fileName = localFile.getName();
SmbFile remoteFile = new SmbFile(remoteUrl + "/" + fileName);
in = new BufferedInputStream( new FileInputStream(localFile));
out = new BufferedOutputStream( new SmbFileOutputStream(remoteFile));
byte [] buffer = new byte [ 1024 ];
while (in.read(buffer) != - 1 ) {
out.write(buffer);
buffer = new byte [ 1024 ];
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 远程url smb://192.168.0.77/test
// 如果需要用户名密码就这样:
// smb://username:password@192.168.0.77/test
}
package com.yss.test.FileReadWriter;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;
import jcifs.smb.SmbFileOutputStream;
public class RemoteAccessData {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
smbGet1("smb://192.168.75.204/test/新建 文本文档.txt" );
smbGet("smb://192.168.75.204/test/新建 文本文档.txt" , "e:/" );
}
/**
* 方法一:
*
* @param remoteUrl
* 远程路径 smb://192.168.75.204/test/新建 文本文档.txt
* @throws IOException
*/
public static void smbGet1(String remoteUrl) throws IOException {
SmbFile smbFile = new SmbFile(remoteUrl);
int length = smbFile.getContentLength(); // 得到文件的大小
byte buffer[] = new byte [length];
SmbFileInputStream in = new SmbFileInputStream(smbFile);
// 建立smb文件输入流
while ((in.read(buffer)) != - 1 ) {
System.out.write(buffer);
System.out.println(buffer.length);
}
in.close();
}
// 从共享目录下载文件
/**
* 方法二:
* 路径格式:smb://192.168.75.204/test/新建 文本文档.txt
* smb://username:password@192.168.0.77/test
* @param remoteUrl
* 远程路径
* @param localDir
* 要写入的本地路径
*/
public static void smbGet(String remoteUrl, String localDir) {
InputStream in = null ;
OutputStream out = null ;
try {
SmbFile remoteFile = new SmbFile(remoteUrl);
if (remoteFile == null ) {
System.out.println("共享文件不存在" );
return ;
}
String fileName = remoteFile.getName();
File localFile = new File(localDir + File.separator + fileName);
in = new BufferedInputStream( new SmbFileInputStream(remoteFile));
out = new BufferedOutputStream( new FileOutputStream(localFile));
byte [] buffer = new byte [ 1024 ];
while (in.read(buffer) != - 1 ) {
out.write(buffer);
buffer = new byte [ 1024 ];
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 向共享目录上传文件
public static void smbPut(String remoteUrl, String localFilePath) {
InputStream in = null ;
OutputStream out = null ;
try {
File localFile = new File(localFilePath);
String fileName = localFile.getName();
SmbFile remoteFile = new SmbFile(remoteUrl + "/" + fileName);
in = new BufferedInputStream( new FileInputStream(localFile));
out = new BufferedOutputStream( new SmbFileOutputStream(remoteFile));
byte [] buffer = new byte [ 1024 ];
while (in.read(buffer) != - 1 ) {
out.write(buffer);
buffer = new byte [ 1024 ];
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 远程url smb://192.168.0.77/test
// 如果需要用户名密码就这样:
// smb://username:password@192.168.0.77/test
}
相关文章推荐
- Java中的Process类
- java中for和foreach的用法
- 来段代码提提神-Java实现文件压缩
- springmvc如何拦截上传文件最大限制异常
- Spring MVC 异常处理优解
- Java中的equals学习小结
- Java类加载与初始化机制实例分析
- JAVA程序元素在内存中的分配
- java反射机制方法的获取与调用
- java的一些发展前景!
- JHipster简介
- java的一些学习方案!
- java 学习资料
- Java核心知识点-Java多线程
- Spring4 版 eventbus 事件通信 事件驱动 介绍
- spark mllib 应用程序开发及提交到spark集群运行--入门
- 面向对象的java编程及面向对象的特征
- Struts2介绍及教程
- MyEclipse has detected that less than 5% of the 341MB of PS Old Gen(Heap memory) space remains.
- Java学习之HashMap和Hashtable的区别