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(Server Message Block)协议来读取远程文件,SMB 是一个标准的网络协议,允许不同的操作系统之间进行文件共享和打印机共享。在 Java 中,我们可以使用 ...
这个库包含了一系列的类和接口,如NtlmAuthenticator用于NT LAN Manager身份验证,SmbFile用于表示远程文件对象,SmbFileInputStream和SmbFileOutputStream则分别用于读写远程文件。 以下是一个简单的示例,展示...
在Java编程环境中,处理共享文件是一项常见的任务,特别是在企业级应用中,...通过这个类,你可以轻松地读取、写入和管理远程文件,进一步扩展你的应用程序的功能。但同时,也需要注意安全性,尤其是在处理敏感数据时。
在Java中,利用jcifs进行Samba文件操作的基本步骤如下: 1. **配置认证**:首先,你需要创建一个NtlmPasswordAuthentication对象,提供用户名、密码和域名(或者工作组),这是连接到Samba服务器的身份验证凭证。 ...
这通常涉及`FileInputStream`(用于读取远程文件)和`FileOutputStream`(用于写入本地文件)。`SmbUtils.java`中的某个方法可能负责从共享目录读取文件内容,并通过文件流将其写入到本地目录。 4. **身份验证**: ...
使用smbj.jar,开发者可以创建Java程序来连接到远程服务器的共享文件夹,执行读写操作,甚至管理文件权限。以下是一些核心知识点: 1. **安装与引入**:首先,你需要下载smbj.jar并将其添加到你的项目类路径中。...
- Android可以利用VLC、ExoPlayer等多媒体播放器框架,通过SMB协议访问并播放远程服务器上的视频文件。 - 需要将SMB文件路径转换为合适的URI,然后传递给播放器。例如,对于VLC,可以使用`vlc://`或`smb://`前缀。...
这篇博客文章可能详细解释了如何在Java环境中实现对远程文件系统的访问,以便读取、写入或管理共享文件。 在Java中,可以使用开源库如jcifs(Java CIFS Client)来处理SMB/CIFS协议。jcifs库提供了SmbFile类,它...
在Java编程中,经常需要实现跨机器文件操作的功能,比如从远程服务器读取文件或向远程服务器写入文件等。本篇文章将详细探讨如何利用Java实现这一功能,特别是通过JCIFS库进行文件共享的操作。 #### JCIFS 库简介 ...
核心类如`java.io.File`用于表示文件和目录路径,`java.io.FileInputStream`和`java.io.FileOutputStream`用于读写文件,`java.nio`包则提供了更高效的非阻塞I/O操作。在本场景中,读取共享文件夹的文件到本地,可以...
5. **流处理**:JCIFS支持I/O流,可以通过`SmbFileInputStream`和`SmbFileOutputStream`来读写远程文件,这与处理本地文件流的用法一致。 6. **目录操作**:可以列举远程目录的内容,创建、删除子目录,以及遍历...
### Java操作Windows共享目录的方法介绍 #### 一、SMB协议概述 SMB(Server Message Block)协议,也称为CIFS...通过对这些内容的学习,开发者可以更好地掌握如何利用Java语言进行网络文件共享操作的技术要点。
1. **SMB协议支持**:jcifs库实现了SMB协议,使得Java程序可以像操作本地文件系统一样操作远程文件系统。SMB协议是一种应用层协议,用于在网络上进行文件和打印服务,它基于TCP/IP协议族。 2. **身份验证**:jcifs...
JCIFS(Java Community Internet File System)是一个完全用Java编写的开源框架,它实现了SMB(Server Message Block)协议,使得Java应用程序能够如同访问本地文件系统一样,方便地读写Windows或Linux上的共享...
一个简单的jcifs使用示例是读取远程共享上的文本文件: ```java import jcifs.smb.SmbFile; import java.io.*; public class JcifsExample { public static void main(String[] args) throws IOException { ...
在Java编程环境中,jcifs-1.3.15.jar是一个非常重要的库,它使得开发者能够方便地处理SMB(Server Message Block)协议,也就是Windows操作系统中常用的文件共享协议。这个库允许Java程序访问局域网内的共享文件,...
Java Community Interface for File Sharing (JCIFS) 是一个开源的Java库,它允许Java应用程序能够访问和操作Microsoft的网络文件共享协议,例如SMB(Server Message Block)和CIFS(Common Internet File System)...
1. **远程文件读写**:jcifs支持对SMB服务器上的文件进行读取和写入操作,与本地文件系统的操作类似,简化了远程文件操作的复杂性。 2. **文件夹操作**:除了文件,jcifs还支持创建、删除、重命名远程文件夹,以及...
但是,我们可以使用`java.io.File`类的`length()`方法来获取单个文件的大小,或者使用`listFiles()`方法遍历目录来计算总大小。获取整个硬盘的总空间和可用空间通常需要使用操作系统特定的API,这可能需要借助于JNI...
- `SmbFileInputStream`:用于通过SMB协议读取远程文件。 #### 4. SQL Server数据库连接和备份 ```java String dbURL = "jdbc:microsoft:sqlserver://sqlserver'sip:1433;DatabaseName=databasename"; String ...