java 利用SMB读取远程文件

    技术2022-05-19  24

    java 利用SMB读取远程文件

    文章分类:Java编程

    Java代码   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       }  

    最新回复(0)