`
maloveqiao
  • 浏览: 102027 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

java访问远程共享文件

    博客分类:
  • java
 
阅读更多
转载自: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;
     }
}
分享到:
评论

相关推荐

    java访问共享文件

    标题“Java访问共享文件”指的是使用Java编程语言来操作网络上的共享文件系统,这通常涉及到Windows的SMB(Server Message Block)协议或者更现代的CIFS(Common Internet File System)协议。这篇博客文章可能详细...

    超详细!java访问windows共享目录并下载文件

    在Java编程环境中,有时我们需要与Windows操作系统进行交互,例如访问共享目录并下载其中的文件。这个过程涉及到几个关键的技术点,包括系统调用、网络通信和文件操作。在这个场景下,我们将通过`SmbUtils.java`和`...

    JAVA下载远程Linux服务器的文件

    在Java编程中,有时我们需要与远程Linux服务器进行交互,例如下载或上传文件。在这个场景下,我们可以使用SMB(Server Message Block)协议,这是一种网络文件共享协议,常见于Windows系统,但同样可以应用于Linux...

    JAVA代码实现远程操作服务器文件

    JAVA代码实现远程操作服务器文件是指使用JAVA语言实现远程操作服务器文件的功能,实现FTP,共享文件夹操作。该功能可以实现远程服务器文件的上传、下载、复制、移动、删除等操作。 description: 该实现使用了...

    java操作共享文件

    在Java编程环境中,处理共享文件是一项常见的任务,特别是在企业级应用中,可能需要访问网络上的文件系统资源。Java提供了一些库来实现这一功能,其中之一就是jcifs库,它是一个开源的Java SMB(Server Message ...

    java共享文件(windows).rar

    5. **权限和安全考虑**:Java程序执行文件共享操作时,需要确保有足够的权限访问远程文件系统。这可能涉及Windows用户账户控制(UAC)和文件系统的NTFS权限。在jcifs中,可以设置`SmbFile`对象的认证信息,如用户名...

    在java中实现对access数据库的远程访问

    (java 中实现对 access 数据库的远程访问) java 中实现对 access 数据库的远程访问是指在 java 中通过远程访问 access 数据库,以满足项目中的需求。在实际项目中,可能会遇到这样的问题:A 服务器上的应用程序需要...

    java 操作windows 共享目录方法介绍

    * Description: 从远程共享目录下载文件到本地目录 * @param remoteUrl 远程文件的URL路径 * @param localDir 本地目标目录 */ public void smbGet(String remoteUrl, String localDir) { InputStream in = ...

    Java远程共享目录的操作代码

    然后,使用SmbFile对象来访问远程共享目录,检查文件是否存在,如果存在,则将文件下载到本地。 在上传文件时,需要使用OutputStream来实现文件的写入。首先,需要创建一个File对象,用于指定上传的文件名和路径。...

    java向其他机器写文件 共享机器写文件

    ### Java向其他机器写文件与共享机器写文件 在Java编程中,经常需要实现跨机器文件操作的功能,比如从远程服务器读取文件或向远程服务器写入文件等。本篇文章将详细探讨如何利用Java实现这一功能,特别是通过JCIFS...

    Java使用NFS实现上传、下载、读取文件工具类

    封装性:工具类封装了NFS相关的复杂连接、认证和I/O操作细节,使得业务层代码无需关心底层通信协议,只需通过简单API即可操作远程文件。 可配置性:允许灵活配置NFS服务器地址、挂载点以及其他相关参数,使工具类...

    java的远程登录和文件传输功能的实现.pdf

    该功能可以实现用户远程访问服务器上的文件和应用程序,提高了工作效率和灵活性。 文件传输是指将文件从一台计算机传输到另一台计算机,实现文件的共享和交换。该功能可以实现文件的远程传输,提高了工作效率和协作...

    jcifs java远程访问

    3. **身份验证**:在使用JCIFS时,需要进行身份验证才能访问远程资源。这通常涉及到用户名、密码和域的设置,JCIFS支持NTLMv1和NTLMv2身份验证协议。 4. **文件操作**:通过`SmbFile`对象,可以执行各种文件操作,...

    Android smb访问共享文件以及播放共享文件

    - jcifs-ng是一个Java实现的SMB客户端库,适用于Android平台,它提供了访问SMB共享文件的功能。 - 使用jcifs-ng,开发者需要创建SmbFile对象,指定服务器地址、共享路径和用户名/密码,然后可以进行文件的读写操作...

    java判断远程服务器上的文件是否存在的方法

    `jcifs`库支持在Java中处理SMB(Server Message Block)协议,使得你可以通过用户认证访问远程共享资源。 以下是一个使用`jcifs.smb.SmbFile`的例子: ```java import jcifs.smb.SmbFile; import jcifs.smb....

    java 远程桌面

    Java RDP库通常用于实现Windows系统的远程桌面连接,它模拟了微软的RDP协议,让用户能够通过Java程序访问远程Windows桌面。而SSH协议则常用于Linux和Unix系统,它提供安全的网络连接,支持命令行交互以及文件传输。 ...

    Java对Samba进行上传与下载文件-jcifs

    开发者可以通过简单的API调用来实现对远程Samba共享的复杂操作,这对于需要在不同操作系统之间进行文件同步或迁移的项目尤其有用。通过深入理解和实践jcifs的用法,你可以构建出高效且可靠的文件管理系统。

    java利用SMB读取远程文件的方法

    System.out.println("共享文件不存在"); return; } String fileName = remoteFile.getName(); File localFile = new File(localDir + File.separator + fileName); in = new BufferedInputStream(new ...

    java 简单网络远程控制(源码)

    同时,这个项目也可以作为一个起点,进一步扩展功能,如添加文件传输、屏幕共享等高级特性。 总的来说,理解并分析这个简单的Java网络远程控制源码,不仅可以提升Java网络编程技能,还能帮助我们深入理解网络通信的...

    Java读写Windows共享文件夹的方法实例

    值得注意的是,Linux系统虽然理论上也可以通过SMB协议共享文件,但需要安装Samba服务软件,以便支持SMB协议。Samba是一个开源的软件,可以让Linux系统与Windows网络无缝集成,提供文件和打印服务。 总之,Java通过...

Global site tag (gtag.js) - Google Analytics