- 浏览: 102027 次
- 性别:
- 来自: 大连
文章分类
最新评论
转载自:http://hu-bj.javaeye.com/blog/327198
使用开源库JCIFS
http://jcifs.samba.org/
Microsoft使用NetBIOS实现了一个网络文件/打印服
务系统,这个系统基于NetBIOS设定了一套文件共享协议,Microsoft称之为SMB(
Server Message Block)协议。这个协议被Microsoft用于它们Lan Manager和Wi
ndows NT服务器系统中,而Windows系统均包括这个协议的客户软件,因而这个协
议在局域网系统中影响很大。
随着Internet的流行,Microsoft希望将这个协议扩展到Internet上去,成为
Inter net上计算机之间相互共享数据的一种标准。因此它将原有的几乎没有多少
技术文档的SMB协议进行整理,重新命名为 CIFS(Common Internet File Syste
m),并打算将它与NetBIOS相脱离,试图使它成为Internet上的一个标准协议。
jcifs是CIFS在JAVA中的一个实现,是samba组织负责维护开发的一个开源项目,
专注于使用java语言对cifs协议的设计和实现。他们将jcifs设计成为一个完整的,丰
富的,具有可扩展能力且线程安全的客户端库。这一库可以应用于各种java虚拟机访
问遵循CIFS/SMB网络传输协议的网络资源。
示例:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;
public class RemoteShareFile {
public static void main(String[] args) {
String smbMachine="smb://用户名:密码@IP地址/目录/文件名";
String localPath="D://";
File file=readFromSmb(smbMachine,localPath);
}
public static File readFromSmb(String smbMachine,String localpath){
File localfile=null;
InputStream bis=null;
OutputStream bos=null;
try {
SmbFile rmifile = new SmbFile(smbMachine);
String filename=rmifile.getName();
bis=new BufferedInputStream(new SmbFileInputStream(rmifile));
localfile=new File(localpath+File.separator+filename);
bos=new BufferedOutputStream(new FileOutputStream(localfile));
int length=rmifile.getContentLength();
byte[] buffer=new byte[length];
Date date=new Date();
bis.read(buffer);
bos.write(buffer);
Date end=new Date();
int time= (int) ((end.getTime()-date.getTime())/1000);
if(time>0)
System.out.println("用时:"+time+"秒 "+"速度:"+length/time/1024+"kb/秒");
} catch (Exception e){
System.out.println(e.getMessage());
}finally{
try {
bos.close();
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return localfile;
}
}
使用开源库JCIFS
http://jcifs.samba.org/
Microsoft使用NetBIOS实现了一个网络文件/打印服
务系统,这个系统基于NetBIOS设定了一套文件共享协议,Microsoft称之为SMB(
Server Message Block)协议。这个协议被Microsoft用于它们Lan Manager和Wi
ndows NT服务器系统中,而Windows系统均包括这个协议的客户软件,因而这个协
议在局域网系统中影响很大。
随着Internet的流行,Microsoft希望将这个协议扩展到Internet上去,成为
Inter net上计算机之间相互共享数据的一种标准。因此它将原有的几乎没有多少
技术文档的SMB协议进行整理,重新命名为 CIFS(Common Internet File Syste
m),并打算将它与NetBIOS相脱离,试图使它成为Internet上的一个标准协议。
jcifs是CIFS在JAVA中的一个实现,是samba组织负责维护开发的一个开源项目,
专注于使用java语言对cifs协议的设计和实现。他们将jcifs设计成为一个完整的,丰
富的,具有可扩展能力且线程安全的客户端库。这一库可以应用于各种java虚拟机访
问遵循CIFS/SMB网络传输协议的网络资源。
示例:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;
public class RemoteShareFile {
public static void main(String[] args) {
String smbMachine="smb://用户名:密码@IP地址/目录/文件名";
String localPath="D://";
File file=readFromSmb(smbMachine,localPath);
}
public static File readFromSmb(String smbMachine,String localpath){
File localfile=null;
InputStream bis=null;
OutputStream bos=null;
try {
SmbFile rmifile = new SmbFile(smbMachine);
String filename=rmifile.getName();
bis=new BufferedInputStream(new SmbFileInputStream(rmifile));
localfile=new File(localpath+File.separator+filename);
bos=new BufferedOutputStream(new FileOutputStream(localfile));
int length=rmifile.getContentLength();
byte[] buffer=new byte[length];
Date date=new Date();
bis.read(buffer);
bos.write(buffer);
Date end=new Date();
int time= (int) ((end.getTime()-date.getTime())/1000);
if(time>0)
System.out.println("用时:"+time+"秒 "+"速度:"+length/time/1024+"kb/秒");
} catch (Exception e){
System.out.println(e.getMessage());
}finally{
try {
bos.close();
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return localfile;
}
}
发表评论
-
as3.0 & JAVA & JS 64位编码与解码
2012-10-15 15:23 87164位编码 其是PHPRPC工程的一部分 PHPRPC 就是 ... -
Resource is out of sync with the file system的解决办法
2012-10-08 10:23 629在eclipse中,启动server时报此错,是因为文件系统不 ... -
Java 小例子:数据持久化(保存数据到文件)
2012-09-29 10:19 0说数据持久化,初学者可能还不太懂;但要说把数据保存到文件,这谁 ... -
JAVA程序运行时保存数据的六个地方
2012-09-29 10:15 0JAVA程序运行时,有六个地方都可以保存数据: (1) 寄存器 ... -
java精华(8)
2012-09-29 10:05 01.1 Java与XML联合编程之DOM篇 DOM是Docu ... -
java精华(7)
2012-09-29 10:04 03) Visitor模式 Dom4j编码问题彻底解决 ... -
java精华(6)
2012-09-29 10:04 0最令人兴奋的是DOM4J对Visitor的支持,这样可以大大缩 ... -
java精华(5)
2012-09-29 10:02 04. MXBean 接口 在我 ... -
java精华(4)
2012-09-29 10:01 5625: Synchronizer:同步装置 Java 5 ... -
java精华(3)
2012-09-29 10:00 6471.1.1.1.1 读写文本文件 早些时候曾提到从文件里面读 ... -
java精华(2)
2012-09-29 09:59 12911.1.1.1.1 栈类Stack Stack类是Vecto ... -
java精华(1)
2012-09-29 09:58 7961 JAVA SE 1.1 深入JAVA API 1.1.1 ... -
JAVA加密算法的实现用例
2012-09-29 09:57 646对象 参数 algorithm 如:"DSA&quo ... -
取100以内10个不同的随机整数问题
2012-09-14 11:10 1608import java.util.HashSet; impor ... -
Java中为JtextArea控件添加滚动条及设置位置
2012-08-31 12:02 13308应将JTextArea置于JScrollPanel中 若要使只 ... -
Java Swing控件属性归纳
2012-08-31 11:29 1542了解各种用户界面组件 ... -
运行jar文件
2012-08-31 09:30 739一、制作jar文件 在制作.jar 文件之前你必须先编译好你 ...
相关推荐
标题“Java访问共享文件”指的是使用Java编程语言来操作网络上的共享文件系统,这通常涉及到Windows的SMB(Server Message Block)协议或者更现代的CIFS(Common Internet File System)协议。这篇博客文章可能详细...
在Java编程环境中,有时我们需要与Windows操作系统进行交互,例如访问共享目录并下载其中的文件。这个过程涉及到几个关键的技术点,包括系统调用、网络通信和文件操作。在这个场景下,我们将通过`SmbUtils.java`和`...
在Java编程中,有时我们需要与远程Linux服务器进行交互,例如下载或上传文件。在这个场景下,我们可以使用SMB(Server Message Block)协议,这是一种网络文件共享协议,常见于Windows系统,但同样可以应用于Linux...
JAVA代码实现远程操作服务器文件是指使用JAVA语言实现远程操作服务器文件的功能,实现FTP,共享文件夹操作。该功能可以实现远程服务器文件的上传、下载、复制、移动、删除等操作。 description: 该实现使用了...
在Java编程环境中,处理共享文件是一项常见的任务,特别是在企业级应用中,可能需要访问网络上的文件系统资源。Java提供了一些库来实现这一功能,其中之一就是jcifs库,它是一个开源的Java SMB(Server Message ...
5. **权限和安全考虑**:Java程序执行文件共享操作时,需要确保有足够的权限访问远程文件系统。这可能涉及Windows用户账户控制(UAC)和文件系统的NTFS权限。在jcifs中,可以设置`SmbFile`对象的认证信息,如用户名...
(java 中实现对 access 数据库的远程访问) java 中实现对 access 数据库的远程访问是指在 java 中通过远程访问 access 数据库,以满足项目中的需求。在实际项目中,可能会遇到这样的问题:A 服务器上的应用程序需要...
* Description: 从远程共享目录下载文件到本地目录 * @param remoteUrl 远程文件的URL路径 * @param localDir 本地目标目录 */ public void smbGet(String remoteUrl, String localDir) { InputStream in = ...
然后,使用SmbFile对象来访问远程共享目录,检查文件是否存在,如果存在,则将文件下载到本地。 在上传文件时,需要使用OutputStream来实现文件的写入。首先,需要创建一个File对象,用于指定上传的文件名和路径。...
### Java向其他机器写文件与共享机器写文件 在Java编程中,经常需要实现跨机器文件操作的功能,比如从远程服务器读取文件或向远程服务器写入文件等。本篇文章将详细探讨如何利用Java实现这一功能,特别是通过JCIFS...
封装性:工具类封装了NFS相关的复杂连接、认证和I/O操作细节,使得业务层代码无需关心底层通信协议,只需通过简单API即可操作远程文件。 可配置性:允许灵活配置NFS服务器地址、挂载点以及其他相关参数,使工具类...
该功能可以实现用户远程访问服务器上的文件和应用程序,提高了工作效率和灵活性。 文件传输是指将文件从一台计算机传输到另一台计算机,实现文件的共享和交换。该功能可以实现文件的远程传输,提高了工作效率和协作...
3. **身份验证**:在使用JCIFS时,需要进行身份验证才能访问远程资源。这通常涉及到用户名、密码和域的设置,JCIFS支持NTLMv1和NTLMv2身份验证协议。 4. **文件操作**:通过`SmbFile`对象,可以执行各种文件操作,...
- jcifs-ng是一个Java实现的SMB客户端库,适用于Android平台,它提供了访问SMB共享文件的功能。 - 使用jcifs-ng,开发者需要创建SmbFile对象,指定服务器地址、共享路径和用户名/密码,然后可以进行文件的读写操作...
`jcifs`库支持在Java中处理SMB(Server Message Block)协议,使得你可以通过用户认证访问远程共享资源。 以下是一个使用`jcifs.smb.SmbFile`的例子: ```java import jcifs.smb.SmbFile; import jcifs.smb....
Java RDP库通常用于实现Windows系统的远程桌面连接,它模拟了微软的RDP协议,让用户能够通过Java程序访问远程Windows桌面。而SSH协议则常用于Linux和Unix系统,它提供安全的网络连接,支持命令行交互以及文件传输。 ...
开发者可以通过简单的API调用来实现对远程Samba共享的复杂操作,这对于需要在不同操作系统之间进行文件同步或迁移的项目尤其有用。通过深入理解和实践jcifs的用法,你可以构建出高效且可靠的文件管理系统。
System.out.println("共享文件不存在"); return; } String fileName = remoteFile.getName(); File localFile = new File(localDir + File.separator + fileName); in = new BufferedInputStream(new ...
同时,这个项目也可以作为一个起点,进一步扩展功能,如添加文件传输、屏幕共享等高级特性。 总的来说,理解并分析这个简单的Java网络远程控制源码,不仅可以提升Java网络编程技能,还能帮助我们深入理解网络通信的...
值得注意的是,Linux系统虽然理论上也可以通过SMB协议共享文件,但需要安装Samba服务软件,以便支持SMB协议。Samba是一个开源的软件,可以让Linux系统与Windows网络无缝集成,提供文件和打印服务。 总之,Java通过...