`

java 利用SMB读取远程文件

阅读更多
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

}


所需jcifs  jar包:
分享到:
评论

相关推荐

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

    Java 利用 SMB 读取远程文件的方法 Java 语言可以通过 SMB(Server Message Block)协议来读取远程文件,SMB 是一个标准的网络协议,允许不同的操作系统之间进行文件共享和打印机共享。在 Java 中,我们可以使用 ...

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

    这个库包含了一系列的类和接口,如NtlmAuthenticator用于NT LAN Manager身份验证,SmbFile用于表示远程文件对象,SmbFileInputStream和SmbFileOutputStream则分别用于读写远程文件。 以下是一个简单的示例,展示...

    java操作共享文件

    在Java编程环境中,处理共享文件是一项常见的任务,特别是在企业级应用中,...通过这个类,你可以轻松地读取、写入和管理远程文件,进一步扩展你的应用程序的功能。但同时,也需要注意安全性,尤其是在处理敏感数据时。

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

    在Java中,利用jcifs进行Samba文件操作的基本步骤如下: 1. **配置认证**:首先,你需要创建一个NtlmPasswordAuthentication对象,提供用户名、密码和域名(或者工作组),这是连接到Samba服务器的身份验证凭证。 ...

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

    这通常涉及`FileInputStream`(用于读取远程文件)和`FileOutputStream`(用于写入本地文件)。`SmbUtils.java`中的某个方法可能负责从共享目录读取文件内容,并通过文件流将其写入到本地目录。 4. **身份验证**: ...

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

    使用smbj.jar,开发者可以创建Java程序来连接到远程服务器的共享文件夹,执行读写操作,甚至管理文件权限。以下是一些核心知识点: 1. **安装与引入**:首先,你需要下载smbj.jar并将其添加到你的项目类路径中。...

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

    - Android可以利用VLC、ExoPlayer等多媒体播放器框架,通过SMB协议访问并播放远程服务器上的视频文件。 - 需要将SMB文件路径转换为合适的URI,然后传递给播放器。例如,对于VLC,可以使用`vlc://`或`smb://`前缀。...

    java访问共享文件

    这篇博客文章可能详细解释了如何在Java环境中实现对远程文件系统的访问,以便读取、写入或管理共享文件。 在Java中,可以使用开源库如jcifs(Java CIFS Client)来处理SMB/CIFS协议。jcifs库提供了SmbFile类,它...

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

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

    java共享文件(windows).rar

    核心类如`java.io.File`用于表示文件和目录路径,`java.io.FileInputStream`和`java.io.FileOutputStream`用于读写文件,`java.nio`包则提供了更高效的非阻塞I/O操作。在本场景中,读取共享文件夹的文件到本地,可以...

    jcifs java远程访问

    5. **流处理**:JCIFS支持I/O流,可以通过`SmbFileInputStream`和`SmbFileOutputStream`来读写远程文件,这与处理本地文件流的用法一致。 6. **目录操作**:可以列举远程目录的内容,创建、删除子目录,以及遍历...

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

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

    java共享文件下载依赖包jcifs-1.3.3.jar

    1. **SMB协议支持**:jcifs库实现了SMB协议,使得Java程序可以像操作本地文件系统一样操作远程文件系统。SMB协议是一种应用层协议,用于在网络上进行文件和打印服务,它基于TCP/IP协议族。 2. **身份验证**:jcifs...

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

    JCIFS(Java Community Internet File System)是一个完全用Java编写的开源框架,它实现了SMB(Server Message Block)协议,使得Java应用程序能够如同访问本地文件系统一样,方便地读写Windows或Linux上的共享...

    jcifs API开发文档、jar包等

    一个简单的jcifs使用示例是读取远程共享上的文本文件: ```java import jcifs.smb.SmbFile; import java.io.*; public class JcifsExample { public static void main(String[] args) throws IOException { ...

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

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

    jcifs-1.3.17.jar

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

    jcifs-1.3.16.jar及源码

    1. **远程文件读写**:jcifs支持对SMB服务器上的文件进行读取和写入操作,与本地文件系统的操作类似,简化了远程文件操作的复杂性。 2. **文件夹操作**:除了文件,jcifs还支持创建、删除、重命名远程文件夹,以及...

    Java获取系统CPU、内存、硬盘等系统信息

    但是,我们可以使用`java.io.File`类的`length()`方法来获取单个文件的大小,或者使用`listFiles()`方法遍历目录来计算总大小。获取整个硬盘的总空间和可用空间通常需要使用操作系统特定的API,这可能需要借助于JNI...

    java源代码关于FTP方面的

    - `SmbFileInputStream`:用于通过SMB协议读取远程文件。 #### 4. SQL Server数据库连接和备份 ```java String dbURL = "jdbc:microsoft:sqlserver://sqlserver'sip:1433;DatabaseName=databasename"; String ...

Global site tag (gtag.js) - Google Analytics