/***
* 从局域网共享文件获取文件输入流
* @param remotePathAndFileName:共享的相对路径+文件名(含后缀),如:/qualityNotice/我们的祖国是花园.txt
* @return
*/
public static InputStream smbGetFile(String remotePathAndFileName){
String fullPath = "";
String lastChar = remotePathAndFileName.substring(0,1);
SmbFileInputStream in = null;
String ip = CommonManage.smbgetConnectIp();
String user = CommonManage.smbgetConnectUser();
String pass = CommonManage.smbgetConnectPass();
String targetPath = "smb://" + user + ":" + pass + "@" + ip + "/htwyRes";
if (lastChar.equals("/") || lastChar.equals("\\"))
fullPath = targetPath + remotePathAndFileName.trim();
else
fullPath = targetPath + "/" + remotePathAndFileName.trim();
SmbFile file = null;
System.out.println("下载路径:"+fullPath);
try {
file = new SmbFile(fullPath);
System.out.println("下载文件:"+file);
in = new SmbFileInputStream(file);
System.out.println("输出流:"+in);
} catch (Exception e) {
try {
if (in==null){
fullPath = targetPath + "/noPic.jpg";
file = new SmbFile(fullPath);
in = new SmbFileInputStream(file);
}
} catch (Exception e2) {
}
}
return in;
}
/***
* 从局域网共享文件下载文件到指定目录
* @param remotePathAndFileName 共享的相对路径+文件名(含后缀),如:/qualityNotice/我们的祖国是花园.txt
* @param localPath 要存放的本地目录
* @param realFileName 下载后的文件名(含后缀),如果为空则按共享文件夹上的文件名(uuid),如果指定了按指定的,例如:我们的祖国是花园.txt
* @return
*/
public static fileUploadReturn smbDownloadFile(String remotePathAndFileName,String localPath,String realFileName){
InputStream in = null;
OutputStream out = null;
fileUploadReturn fur = new fileUploadReturn();
String ip = CommonManage.smbgetConnectIp();
String user = CommonManage.smbgetConnectUser();
String pass = CommonManage.smbgetConnectPass();
try{
File localFile = null;
String targetFullPath = "";
String oneChar = remotePathAndFileName.substring(0,1);
String targetPath = "smb://" + user + ":" + pass + "@" + ip + "/htwyRes";
if (oneChar.equals("/") || oneChar.equals("\\"))
targetFullPath = targetPath + remotePathAndFileName.trim();
else
targetFullPath = targetPath + "/" + remotePathAndFileName.trim();
SmbFile smbFile = new SmbFile(targetFullPath);
if (smbFile==null){
targetFullPath = targetPath + "/noPic.jpg";
smbFile = new SmbFile(targetFullPath);
}
oneChar = localPath.substring(localPath.length()-1);
if (!oneChar.equals("/") && !oneChar.equals("\\"))
localPath = localPath + File.separator;
File existsTest = new File(localPath);
if (!existsTest.exists())
existsTest.mkdirs();
String fileName = smbFile.getName();
if (realFileName.equals("") || realFileName==null){
localFile = new File(localPath + fileName);
fur.setSysFileName(fileName);
} else {
localFile = new File(localPath + realFileName);
fur.setSysFileName(realFileName);
}
in = new SmbFileInputStream(smbFile);
out = new FileOutputStream(localFile);
byte[] buffer = new byte[1024];
int length = 0;
while ((length = in.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
fur.setSucess(true);
fur.setMsg("下载成功。");
} catch (Exception e) {
fur.setSucess(false);
fur.setMsg("下载失败。");
e.printStackTrace();
return fur;
} finally {
try {
if (out!=null)
out.close();
if (in!=null)
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return fur;
}
/***
* 判断局域网共享文件下的文件是否存在
* @param remotePathAndFile 共享电脑路径加文件 如/qualityNotice/a213dadfdc35z432d2yu9.txt
* @return
*/
public static boolean smbCheckFileExists(String remotePathAndFile){
boolean isExists = true;
String ip = CommonManage.smbgetConnectIp();
String user = CommonManage.smbgetConnectUser();
String pass = CommonManage.smbgetConnectPass();
try {
String targetFullPath = "";
String oneChar = remotePathAndFile.substring(0,1);
String targetPath = "smb://" + user + ":" + pass + "@" + ip + "/htwyRes";
if (oneChar.equals("/") || oneChar.equals("\\"))
targetFullPath = targetPath + remotePathAndFile.trim();
else
targetFullPath = targetPath + "/" + remotePathAndFile.trim();
SmbFile checkFile = new SmbFile(targetFullPath);
if (checkFile.exists() && checkFile.isFile()){
} else
isExists = false;
} catch (Exception e) {
isExists = false;
e.printStackTrace();
}
return isExists;
}
/***
* 把本地磁盘中的文件上传到局域网共享文件下
* @param remotePath 共享电脑路径 如:/qualityNotice
* @param localPathAndFileName 完整的本地的文件路径,如 C:/htwy/我们的祖国是花园.txt
*/
public static fileUploadReturn smbUploadFile(String remotePath, String localPathAndFileName){
InputStream in = null;
OutputStream out = null;
fileUploadReturn fur = new fileUploadReturn();
String ip = CommonManage.smbgetConnectIp();
String user = CommonManage.smbgetConnectUser();
String pass = CommonManage.smbgetConnectPass();
try {
File localFile = new File(localPathAndFileName);
String targetFullPath = "";
String oneChar = remotePath.substring(0,1);
String targetPath = "smb://" + user + ":" + pass + "@" + ip + "/htwyRes";
if (oneChar.equals("/") || oneChar.equals("\\"))
targetFullPath = targetPath + remotePath.trim();
else
targetFullPath = targetPath + "/" + remotePath.trim();
SmbFile existsTest = new SmbFile(targetFullPath);
if (!existsTest.exists())
existsTest.mkdirs();
String fileExt = localPathAndFileName.substring(localPathAndFileName.lastIndexOf('.') + 1);
if (fileExt.equals("") || fileExt==null){
fur.setSucess(false);
fur.setMsg("文件名应包含后缀名。");
} else {
String sysFileName = CommonManage.getUuid() + "." + fileExt;
SmbFile remoteFile = null;
oneChar = targetFullPath.substring(targetFullPath.length()-1);
if (oneChar.equals("/") || oneChar.equals("\\"))
remoteFile = new SmbFile(targetFullPath + sysFileName);
else
remoteFile = new SmbFile(targetFullPath + "/" + sysFileName);
in = new FileInputStream(localFile);
out = new SmbFileOutputStream(remoteFile);
byte[] buffer = new byte[1024];
int length = 0;
while ((length = in.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
fur.setSucess(true);
fur.setSysFileName(sysFileName);
fur.setMsg("上传成功。");
}
} catch (Exception e) {
fur.setSucess(false);
fur.setMsg("上传失败。");
e.printStackTrace();
} finally {
try {
out.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return fur;
}
/***
* 把本地磁盘中的文件上传到局域网共享文件下
* @param remotePath 共享电脑路径 如:/qualityNotice
* @param inputStream 文件的InputStream形式
* @param fileName 本地的文件名(含后缀名),如:我们的祖国是花园.txt
* @return
*/
public static fileUploadReturn smbUploadFile(String remotePath, InputStream inputStream, String fileName){
InputStream in = null;
OutputStream out = null;
fileUploadReturn fur = new fileUploadReturn();
String ip = CommonManage.smbgetConnectIp();
String user = CommonManage.smbgetConnectUser();
String pass = CommonManage.smbgetConnectPass();
try {
String targetFullPath = "";
String oneChar = remotePath.substring(0,1);
String targetPath = "smb://" + user + ":" + pass + "@" + ip + "/htwyRes";
if (oneChar.equals("/") || oneChar.equals("\\"))
targetFullPath = targetPath + remotePath.trim();
else
targetFullPath = targetPath + "/" + remotePath.trim();
SmbFile existsTest = new SmbFile(targetFullPath);
if (!existsTest.exists())
existsTest.mkdirs();
String fileExt = fileName.substring(fileName.lastIndexOf('.') + 1);
if (fileExt.equals("") || fileExt==null){
fur.setSucess(false);
fur.setMsg("文件名应包含后缀名。");
} else {
String sysFileName = CommonManage.getUuid() + "." + fileExt;
SmbFile remoteFile = null;
oneChar = targetFullPath.substring(targetFullPath.length()-1);
if (oneChar.equals("/") || oneChar.equals("\\"))
remoteFile = new SmbFile(targetFullPath + sysFileName);
else
remoteFile = new SmbFile(targetFullPath + "/" + sysFileName);
in = inputStream;
out = new SmbFileOutputStream(remoteFile);
byte[] buffer = new byte[1024];
int length = 0;
while ((length = in.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
fur.setSucess(true);
fur.setSysFileName(sysFileName);
fur.setMsg("上传成功。");
}
} catch (Exception e) {
fur.setSucess(false);
fur.setMsg("上传失败。");
e.printStackTrace();
} finally {
try {
out.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return fur;
}
/***
* 把本地磁盘中的文件上传到局域网共享文件下并覆盖文件
* @param remotePath 共享电脑路径 如:/qualityNotice
* @param inputStream 文件的InputStream形式
* @param fileName 覆盖的文件名(含后缀名),如:我们的祖国是花园.txt
* @return
*/
public static fileUploadReturn smbUploadFileEdit(String remotePath, InputStream inputStream, String fileName){
InputStream in = null;
OutputStream out = null;
fileUploadReturn fur = new fileUploadReturn();
String ip = CommonManage.smbgetConnectIp();
String user = CommonManage.smbgetConnectUser();
String pass = CommonManage.smbgetConnectPass();
try {
String targetFullPath = "";
String oneChar = remotePath.substring(0,1);
String targetPath = "smb://" + user + ":" + pass + "@" + ip + "/htwyRes";
if (oneChar.equals("/") || oneChar.equals("\\"))
targetFullPath = targetPath + remotePath.trim();
else
targetFullPath = targetPath + "/" + remotePath.trim();
SmbFile existsTest = new SmbFile(targetFullPath);
if (!existsTest.exists())
existsTest.mkdirs();
String fileExt = fileName.substring(fileName.lastIndexOf('.') + 1);
if (fileExt.equals("") || fileExt==null){
fur.setSucess(false);
fur.setMsg("文件名应包含后缀名。");
} else {
String sysFileName = fileName;
SmbFile remoteFile = null;
oneChar = targetFullPath.substring(targetFullPath.length()-1);
if (oneChar.equals("/") || oneChar.equals("\\"))
remoteFile = new SmbFile(targetFullPath + sysFileName);
else
remoteFile = new SmbFile(targetFullPath + "/" + sysFileName);
in = inputStream;
out = new SmbFileOutputStream(remoteFile);
byte[] buffer = new byte[1024];
int length = 0;
while ((length = in.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
fur.setSucess(true);
fur.setSysFileName(sysFileName);
fur.setMsg("上传成功。");
}
} catch (Exception e) {
fur.setSucess(false);
fur.setMsg("上传失败。");
e.printStackTrace();
} finally {
try {
out.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return fur;
}
分享到:
相关推荐
在Android平台上,访问和下载SMB(Server Message Block)服务器上的资源是一项常见任务,尤其是在企业环境中,SMB常用于共享文件和数据。SMB是一种网络文件系统协议,它允许网络上的计算机共享文件、打印机和其他...
例如,下载文件可以使用`SmbFileInputStream`,上传文件则使用`SmbFileOutputStream`。 ```java // 下载文件 SmbFile remoteFile = new SmbFile("smb://server/share/filename", auth); InputStream in = new ...
1. 应用功能:此类应用通常具备浏览、搜索、上传、下载、复制、剪切、粘贴、重命名、删除等基本文件操作。用户可以通过输入服务器地址、用户名和密码来连接到内网中的共享资源,实现移动设备与电脑之间的无缝文件...
- 实现文件的断点续传和并发上传下载。 - 监听SMB共享上的文件系统事件,实现自动化处理。 - 处理SMB2和SMB3的安全特性,如加密和签名。 在Java程序中引入这些库后,通过适当的API调用,可以轻松实现与SMB共享文件...
最近tomcat做了负载均衡,碰到一个难题,就是上传文件的共享问题。 最后使用的解决方案是使用一个共享地址,该地址可以被多个服务器共同访问。...实现上传文件到网络共享文件夹和从网络共享文件夹下载文件
SMB是一种网络通信协议,主要用于在局域网内共享文件、打印机、串行端口和互联网连接。早期版本的SMB(如SMB1)存在一些安全漏洞和性能问题。随着技术的发展,SMB2和SMB3相继推出,带来了更高的性能、更强的安全性和...
最近tomcat做了负载均衡,碰到一个难题,就是上传文件的共享问题。 最后使用的解决方案是使用一个共享地址,该地址可以被多个服务器共同访问。...实现上传文件到网络共享文件夹和从网络共享文件夹下载文件
这个库允许Java程序访问局域网内的共享文件,无论是进行上传还是下载。下面将详细介绍如何利用jcifs-1.3.15.jar实现共享文件的上传和下载功能。 首先,我们需要了解jcifs的基本用法。jcifs库提供了SmbFile类,该类...
java操作网络共享 smb2协议 使用smbj.jar访问共享文件夹,解决SMB2/SMB3共享文件夹访问 使用smbj.jar访问共享文件夹,支持SMB2/SMB3,用于解决使用jcifs.jar不支持SMB2/SMB3的问题
SMB文件共享需要的Jar包,实现文件上传、下载。
在Java编程中,有时我们需要与远程Linux服务器进行交互,例如下载或上传文件。在这个场景下,我们可以使用SMB(Server Message Block)协议,这是一种网络文件共享协议,常见于Windows系统,但同样可以应用于Linux...
FTP 服务器是一种文件传输协议服务器,允许用户通过网络上传和下载文件。使用 Linux 系统搭建 FTP 服务器可以提高文件传输的效率和安全性。 四、搭建 SMB 服务器 SMB 服务器是一种服务器消息块服务器,允许用户...
详尽介绍SMB协议,协议的实现,文件设备的操作,设备通信,上传,下载,删除,更名等。
### Samba 如何上传文件 #### 一、Samba 是什么? Samba 是一个用于实现 Linux 或 Unix 系统与 Windows 系统间文件共享的软件包。它提供了 SMB(Server Message Block)协议的支持,使得不同操作系统之间的用户...
Samba使得Android设备能以类似于Windows的方式与Samba服务器进行通信,从而实现文件的上传和下载。 在Android端实现文件上传到Samba服务器,主要涉及以下几个关键技术点: 1. ** SMB 库**:由于Android原生并不...
例如,创建一个名为"uploads"的共享目录,允许特定用户上传文件。 ```ini [uploads] path = /var/uploads writeable = yes create mask = 0775 directory mask = 0775 public = no valid users = user1, user2 ``` ...
5. **文件流操作**:读写SMB服务器上的文件需要理解文件流的概念,开发者可能使用了`java.io`或`java.nio`包来处理输入/输出流,进行文件上传和下载。 6. **网络连接和断开**:项目可能包含了建立和断开SMB连接的...
它实现了客户端SMB / CIFS协议(SMB1和SMB2),该协议允许您的Python应用程序访问文件和从SMB / CIFS共享文件夹(例如Windows文件共享和Samba文件夹)中传输文件。 主要项目网站: : 文档: : 问题追踪器:请...
FTP用于上传和下载文件。在Linux中,常用的FTP服务器软件有vsftpd: 1. 安装vsftpd:`sudo apt-get install vsftpd` 2. 配置文件:`/etc/vsftpd.conf`,设置用户权限、匿名访问等。 3. 启动服务:`sudo service ...