Java 通过SMB服务远程下载文件及zip包中的文件
2011-10-08 22:12
501 查看
jcifs是CIFS在JAVA中的一个实现,是samba组织负责维护开发的一个开源项目,专注于使用java语言对cifs协议的设计和实现。他们将jcifs设计成为一个完整的,丰富的,具有可扩展能力且线程安全的客户端库。这一库可以应用于各种java虚拟机访问遵循CIFS/SMB网络传输协议的网络资源。类似于java.io.File的接口形式,在多线程的工作方式下被证明是有效而容易使用的。
它的资源url定位:smb://{user}:{password}@{host}/{path},smb为协议名,user和password分别为共享文件机子的登陆名和密码,@后面是要访问的资源的主机名或IP地址。最后是资源的共享文件夹名称和共享资源名。
Java 实现zip的解压和读取可以使用ZipInputStream 。
举例如下:
主要步骤就是定义一个SmbFile ,将它读到SmbFileInputStream流,通过ZipInputStream流,遍历文件名,获取到想要的指定文件以后,以字节方式读出,在输出到客户端就完成了。
它的资源url定位:smb://{user}:{password}@{host}/{path},smb为协议名,user和password分别为共享文件机子的登陆名和密码,@后面是要访问的资源的主机名或IP地址。最后是资源的共享文件夹名称和共享资源名。
Java 实现zip的解压和读取可以使用ZipInputStream 。
举例如下:
public static void downloadSmb(HttpServletResponse response,String filename,String zipFile) throws Exception{ try{ SmbFile smbFile = new SmbFile(zipFile);//zipFile是一个包含服务器IP和路径的完整url System.out.println("smbFile:--"+zipFile); SmbFileInputStream in = new SmbFileInputStream(smbFile); ZipInputStream zip = new ZipInputStream(in); ZipEntry entry = null; boolean exist = false; while((entry = zip.getNextEntry()) != null) { System.out.println(entry.getName()); if(entry.getName().equals(filename)){ response.setContentType("application/octet-stream"); response.setHeader("Content-disposition", "attachment; filename=" + filename); OutputStream out = response.getOutputStream(); byte[] b = new byte[1024]; int n; while((n = zip.read(b)) != -1) { out.write(b, 0, n); } out.flush(); out.close(); exist = true; break; } } zip.close(); if(!exist){ throw new Exception("not find path"); } }catch (Exception e) { e.printStackTrace(); throw e; } }
主要步骤就是定义一个SmbFile ,将它读到SmbFileInputStream流,通过ZipInputStream流,遍历文件名,获取到想要的指定文件以后,以字节方式读出,在输出到客户端就完成了。
相关文章推荐
- java 通过SSH方式连接远程主机并上传和下载文件
- [Java Web]服务器获取远程文件并Zip打包给客户端下载
- Java利用SMB上传、下载、读取(内容或文件名)、复制、删除远程文件
- java 通过SSH方式连接远程主机并上传和下载文件
- java实时向zip中写excel文件并通过浏览器实现下载
- java将多个文件一起打成zip包后下载实例
- eclipse通过maven建立java se工程配置log4j,打包成zip,将jar包和配置文件分开,并以bat和sh文件启动java程序
- 【JAVA】通过HttpURLConnection 上传和下载文件
- 通过java读取远程nfs服务器文件
- OpenSUSE Leap 42.3下通过Firefox Opera Chromium浏览器直接执行java应用程序(打开java jnlp文件)实现在服务器远程虚拟控制台完成远程管理的方法
- Java实现远程HDFS的文件操作(新建、上传、下载、删除)
- ubuntu下配置tftp服务以及开发板中通过tftp下载文件
- JAVA下载远程Linux服务器的文件
- 通过SecureCRT从远程Linux服务器上下载文件到本地Windows
- java通过http下载文件
- Java 通过 HTTP 下载文件
- java 多excel下载 打成zip压缩包 程序中创建文件 响应到浏览器
- java 利用SMB读取远程文件
- 通过SecureCRT下载远程Linux服务器上的文件到本地Windows
- JAVA 文件下载 通过controller 转到指定地址