`

Java 用JCIFS访问网络文件共享

阅读更多
public class UploadDownloadUtil
{

	/**
	 * 从共享目录拷贝文件到本地
	 * @param remoteUrl 共享目录上的文件路径
	 * @param localDir 本地目录
	 */
	public void smbGet(String remoteUrl, String localDir)
	{
		InputStream in = null;
		OutputStream out = null;
		try
		{
			SmbFile remoteFile = new SmbFile(remoteUrl);
			//这一句很重要
			remoteFile.connect();
			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();
			}
		}
	}

	/**
	 * 从本地上传文件到共享目录
	 * @Version1.0 Sep 25, 2009 3:49:00 PM
	 * @param remoteUrl 共享文件目录
	 * @param localFilePath 本地文件绝对路径
	 */
	public 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();
			}
		}
	}

	public static void main(String[] args)
	{
		UploadDownloadUtil test = new UploadDownloadUtil();
		// smb:域名;用户名:密码@目的IP/文件夹/文件名.xxx
		// test.smbGet("smb://szpcg;jiang.t:xxx@192.168.193.13/Jake/test.txt",
		// "c://") ;
		
//		test.smbPut("smb://szpcg;jiang.t:xxx@192.168.193.13/Jake",
//				"c://test.txt");
		
		
		//用户名密码不能有强字符,也就是不能有特殊字符,否则会被作为分断处理
		test.smbGet("smb://CHINA;xieruilin:123456Xrl@10.70.36.121/project/report/网上问题智能分析助手使用文档.doc",
		"c://Temp/");

	}

}


需要导入包jcifs-1.3.15.jar
分享到:
评论
2 楼 scwuwei 2013-05-30  
1 楼 weir2009 2012-04-17  
//这一句很重要 
            remoteFile.connect();
这个有问题
remoteFile.exists()
这个才是王道。

相关推荐

    java访问共享文件

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

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

    - 在获取到共享目录的访问权限后,我们可以使用Java的I/O流来读取和下载文件。这通常涉及`FileInputStream`(用于读取远程文件)和`FileOutputStream`(用于写入本地文件)。`SmbUtils.java`中的某个方法可能负责从...

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

    Samba是一个开源软件,允许Linux/Unix系统与Windows系统之间进行文件共享,而jcifs是Java的一个库,它提供了对SMB(Server Message Block)协议的支持,使得Java程序能够无缝地操作Samba网络共享资源。 首先,我们...

    jcifs API开发文档、jar包等

    **jcifs API 开发文档与...jcifs API 为Java开发者提供了一个强大而灵活的工具,帮助他们轻松地整合网络文件共享功能到他们的应用程序中。了解并熟练掌握jcifs API 的使用,能有效提高开发效率,扩展应用的功能范围。

    java操作共享文件

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

    java读取局域网共享机器文件

    4. **使用jcifs库**:jcifs库是Java的一个第三方库,它实现了CIFS(Common Internet File System)协议,使得Java可以方便地操作Windows网络共享。安装jcifs后,你可以像这样创建SmbFile对象并读取文件: ```java ...

    共享文件传输-Jcifs

    jcifs-1.3.14.jar是jcifs库的一个版本,提供了对CIFS协议的支持,使得Java开发者可以实现跨平台的文件共享和传输。 CIFS(Common Internet File System)是一种广泛使用的文件共享协议,尤其在Windows环境中。它...

    jcifs java远程访问

    标题中的“jcifs java远程访问”指的是使用JCIFS库来实现在Java环境中远程访问文件系统。这在分布式系统、云存储以及跨网络协作的场景中非常有用。 描述中提到“提供java远程访问的方法,类似File”,意味着JCIFS库...

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

    JCIFS(Java CIFS)是一个Java类库,它允许Java应用程序通过CIFS(Common Internet File System)协议访问网络文件系统和打印机。CIFS是SMB(Server Message Block)协议的一种实现,广泛用于Windows系统之间的文件...

    使用smbj.jar访问共享文件夹,解决SMB2/SMB3共享文件夹访问的问题

    在IT行业中,尤其是在Java开发领域,访问网络上的共享文件夹是一项常见的任务。有时,我们可能需要从一个系统读取或写入另一个系统上的文件,这时就需要利用特定的库来实现。"smbj.jar"是一个专门用于处理SMB...

    java读取win共享文件夹

    首先,Java中没有内置的直接支持网络共享文件夹访问的API,但可以通过Java的`java.net`和`java.io`包中的类来实现。主要涉及到的类有`Socket`、`BufferedReader`、`BufferedWriter`和`FileInputStream`等。 1. **...

    JAVA SMB共享文件夹操作文件jar支持smb2、smb3.rar

    Java SMB(Server Message Block)库是用于在Java应用程序中访问和操作网络共享文件系统的工具,主要应用于Windows环境,但也可支持其他支持SMB协议的系统。SMB是一种网络通信协议,允许网络上的计算机共享文件、...

    利用jcifs-1.3.15.jar实现共享文件上传下载

    在Java编程环境中,jcifs-1.3.15.jar是一个非常重要的库,它使得开发者能够方便地处理SMB(Server Message Block)协议,也就是Windows操作系统中常用的文件共享协议。这个库允许Java程序访问局域网内的共享文件,...

    jcifs跨服务器操作共享文件夹.tgz

    SMB是一种广泛用于Windows网络中的文件共享协议,但jcifs使得在Java应用程序中也能方便地实现这一功能,打破了操作系统之间的界限。 描述中提到"jar包与项目包",这表明jcifs_1.3.1.jar可能是jcifs库的特定版本,...

    jcifs-1.3.17.jar

    Java Community Interface for File Sharing (JCIFS) 是一个开源的Java库,它允许Java应用程序能够访问和操作Microsoft的网络文件共享协议,例如SMB(Server Message Block)和CIFS(Common Internet File System)...

    java共享文件(windows).rar

    Java在Windows环境中实现文件共享涉及多个关键知识点,包括文件I/O操作、网络编程以及系统权限配置。以下将详细阐述这些内容: 1. **Java文件I/O操作**:Java提供了丰富的API来处理文件读写和目录操作。核心类如`...

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

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

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

    ### Java操作Windows共享目录的方法介绍 #### 一、SMB协议概述 SMB(Server Message Block)协议,也称为CIFS...通过对这些内容的学习,开发者可以更好地掌握如何利用Java语言进行网络文件共享操作的技术要点。

    jcifs实现集成登录

    3. **资源共享**:jcifs允许Java应用访问和操作Windows网络共享,如读取、写入文件,创建目录等。这在多系统集成的环境中特别有用,因为用户登录一次后,可以在不同的系统间无缝切换,访问共享资源。 4. **安全增强...

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

    在这个场景下,我们可以使用SMB(Server Message Block)协议,这是一种网络文件共享协议,常见于Windows系统,但同样可以应用于Linux环境。Java中有一个名为jcifs的库,它允许我们通过SMB接口来操作远程文件系统。 ...

Global site tag (gtag.js) - Google Analytics