java 利用SMB读取远程文件

mac2022-06-30  23

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      }  

转载于:https://www.cnblogs.com/yanduanduan/p/5315196.html

相关资源:java利用SMB读取远程文件的方法
最新回复(0)