package com.smb;
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 jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;
import jcifs.smb.SmbFileOutputStream;
public class Smbtest {
/**
* 从局域网中共享文件中得到文件并保存在本地磁盘上
* @param remoteUrl 共享电脑路径 如:smb//administrator:123456@172.16.10.136/smb/1221.zip , smb为共享文件
* 注:如果一直出现连接不上,有提示报错,并且错误信息是 用户名活密码错误 则修改共享机器的文件夹选项 查看 去掉共享简单文件夹的对勾即可。
* @param localDir 本地路径 如:D:/
*/
public static void smbGet(String remoteUrl,String localDir){
InputStream in = null;
OutputStream out = null;
try {
SmbFile smbFile = new SmbFile(remoteUrl);
String fileName = smbFile.getName();
File localFile = new File(localDir+File.separator+fileName);
in = new BufferedInputStream(new SmbFileInputStream(smbFile));
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();
}
}
}
/**
* 把本地磁盘中的文件上传到局域网共享文件下
* @param remoteUrl 共享电脑路径 如:smb//administrator:123456@172.16.10.136/smb
* @param localFilePath 本地路径 如:D:/
*/
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();
}
}
}
public static void main(String[] args) {
smbPut("smb://administrator:123456@172.16.10.136/smb", "E:/1221.zip");
smbGet("smb://administrator:123456@172.16.10.136/smb/1221.zip", "D:/");
}
}
分享到:
相关推荐
jcifs全称Java CIFS Client Library,它是基于SMB协议的Java实现,允许Java应用在没有操作系统级别的依赖下访问SMB网络资源。jcifs提供了一系列的类和接口,如NtlmPasswordAuthentication用于身份验证,SmbFile用于...
本文详细介绍了如何使用Java语言结合jcifs库操作Windows共享目录的方法,主要包括了SMB协议的基本概念及其在Windows系统中的应用,以及jcifs库的功能特点和具体使用示例。通过对这些内容的学习,开发者可以更好地...
1. **文件上传**:jcifs库允许开发者编写代码将本地文件上传到网络共享,这在分布式系统或者跨平台协作中非常有用。通过SmbFile类,可以创建一个代表网络路径的对象,并调用相关方法进行文件的上传操作。 2. **文件...
- 使用开源库如`jcifs-ng`来实现SMB/CIFS协议,创建Samba服务器并与Windows设备共享文件。 4. 自定义应用协议: - 开发者可以构建基于TCP/UDP的自定义协议,实现文件传输逻辑。 - 利用`Socket`类进行网络编程,`...
共享文件夹通常是基于SMB(Server Message Block)协议的,Java没有直接支持SMB的类,但可以通过第三方库如jcifs(Java SMB Client)来实现。 - 创建一个`Socket`对象,并指定服务器的IP地址和共享文件夹监听的端口...
jcifs库还提供了许多其他功能,如文件上传、目录操作、权限管理等,你可以根据需要进一步探索。 在实际项目中,考虑到安全性,你可能需要使用更安全的身份验证机制,例如通过SSO(单点登录)或集成Active Directory...
Samba基于SMB(Server Message Block)协议,这是一个广泛用于局域网中的文件和打印机共享协议,由Microsoft首先引入,并且在Windows环境中得到广泛应用。在Android上实现Samba功能,可以使得Android设备能够无缝地...
在实际开发中,开发者可以利用如Spring框架提供的文件上传和下载功能,结合数据库存储用户信息和权限,构建一个完整的服务器文件共享系统。同时,客户端可以通过Java的HTTP客户端库如Apache HttpClient或OkHttp来与...
Java编程中的jcifs协议是一个非常重要的知识点,尤其对于那些需要在Java环境中进行网络文件系统操作的开发者来说。jcifs(Java CIFS Client)是Java的一个库,它实现了Common Internet File System (CIFS) 协议,这...
"jfftp文件管理器-开源"是一款基于Java开发的多协议文件管理工具,它集成了对FTP(21)、FTPS(990)、SFTP(22)以及SMB(445)协议的支持,使得用户可以方便地进行远程文件传输和管理。作为JavaForce SDK的一部分...