91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用Java怎么對文件目錄進行遠程共享

發布時間:2020-12-03 15:42:06 來源:億速云 閱讀:175 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關利用Java怎么對文件目錄進行遠程共享,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

.遠程共享目錄操作

1、需要下載對應的jcifs-1.3.18.jar

2、涉及的主要類是  SmbFile(遠程文件操作類) ,還有就是進行登錄驗證,驗證對應的遠程目錄的合法性的操作,其他操作就普通的IO流的操作。

3、從遠程共享目錄下載文件

/**
  * 方法說明:從遠程共享目錄下載文件
  * @param localDir   本地臨時路徑
  * @param removeDir  遠程共享路徑
  * @param _fileName  遠程共享文件名
  * @param removeIp   遠程共享目錄IP
  * @param removeLoginUser 遠程共享目錄用戶名
  * @param removeLoginPass 遠程共享目錄密碼
  * @return
  * @throws Exception
  */
 public static int smbDownload(String localDir, String removeDir,
   String _fileName, String removeIp, String removeLoginUser,
   String removeLoginPass) throws Exception {
  InputStream in = null;
  OutputStream out = null;
  try {
   NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(
     removeIp, removeLoginUser, removeLoginPass);
   SmbFile remoteFile = new SmbFile(removeDir + _fileName, auth);
   if (!remoteFile.exists()) {
    return 0;
   }
   File dir = new File(localDir);
   if (!dir.exists()) {
    dir.mkdirs();
   }
   String fileName = _fileName.substring(_fileName.lastIndexOf("\\")+1, _fileName.length());
   File localFile = new File(localDir + 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 {
    if (null != out) {
     out.close();
    }
   } catch (IOException e) {
    e.printStackTrace();
   } finally {
    if (null != in) {
     try {
      in.close();
     } catch (IOException e) {
      e.printStackTrace();
     }
    }
   }
  }
  return 1;
 }

4、上傳文件都遠程共享目錄

/**
  * 方法說明:上傳文件到遠程共享目錄
  * @param localDir   本地臨時路徑(A:/測試/測試.xls)
  * @param removeDir  遠程共享路徑(smb://10.169.2.xx/測試/,特殊路徑只能用/)
  * @param removeIp   遠程共享目錄IP(10.169.2.xx)
  * @param removeLoginUser 遠程共享目錄用戶名(user)
  * @param removeLoginPass 遠程共享目錄密碼(password)
  * @return
  * @throws Exception 0成功/-1失敗
  */
 public static int smbUploading(String localDir, String removeDir,
   String removeIp, String removeLoginUser, String removeLoginPass) throws Exception {
  NtlmPasswordAuthentication auth = null;
  OutputStream out = null;
  int retVal = 0; 
  try {
   File dir = new File(localDir);
   if (!dir.exists()) {
    dir.mkdirs();
   }
   InetAddress ip = InetAddress.getByName(removeIp); 
   UniAddress address = new UniAddress(ip);
   // 權限驗證
    auth = new NtlmPasswordAuthentication(removeIp, removeLoginUser, removeLoginPass);
   SmbSession.logon(address,auth); 
   //遠程路徑判斷文件文件路徑是否合法
   SmbFile remoteFile = new SmbFile(removeDir + dir.getName(), auth);
   remoteFile.connect();  
   if(remoteFile.isDirectory()){ 
    retVal = -1;
   }
   // 向遠程共享目錄寫入文件
   out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));
   out.write(toByteArray(dir));
  } catch (UnknownHostException e) {
   retVal = -1;
   e.printStackTrace();
  } catch (MalformedURLException e) {
   retVal = -1;
   e.printStackTrace();
  } catch (SmbException e) {
   retVal = -1;
   e.printStackTrace();
  } catch (IOException e) {
   retVal = -1;
   e.printStackTrace();
  } finally{
   if (out != null) {
    try {
     out.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
  return retVal;
 }
 /**
  * Mapped File way MappedByteBuffer 可以在處理大文件時,提升性能
  *
  * @param file 文件
  * @return 字節數組
  * @throws IOException IO異常信息
  */
 @SuppressWarnings("resource")
 public static byte[] toByteArray(File file) throws IOException {
  FileChannel fc = null;
  try {
   fc = new RandomAccessFile(file, "r").getChannel();
   MappedByteBuffer byteBuffer = fc.map(MapMode.READ_ONLY, 0,
     fc.size()).load();
   byte[] result = new byte[(int) fc.size()];
   if (byteBuffer.remaining() > 0) {
    byteBuffer.get(result, 0, byteBuffer.remaining());
   }
   return result;
  } catch (IOException e) {
   e.printStackTrace();
   throw e;
  } finally {
   try {
    fc.close();
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 }

關于利用Java怎么對文件目錄進行遠程共享就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

康马县| 五常市| 永清县| 长寿区| 甘谷县| 定日县| 铜梁县| 抚远县| 石景山区| 伊吾县| 古蔺县| 闽清县| 隆林| 白城市| 乌苏市| 永定县| 石阡县| 大洼县| 南昌市| 中山市| 两当县| 五原县| 林口县| 金溪县| 临邑县| 绥芬河市| 江北区| 阳山县| 宁德市| 新邵县| 泰顺县| 集安市| 治多县| 灵山县| 许昌市| 常山县| 麻江县| 五莲县| 布尔津县| 册亨县| 新绛县|