最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java遠(yuǎn)程共享目錄的操作代碼

 更新時(shí)間:2017年08月31日 12:03:44   作者:獨(dú)具匠心  
這篇文章主要介紹了java操作遠(yuǎn)程共享目錄的實(shí)現(xiàn)代碼,非常不粗,具有參考借鑒價(jià)值,需要的朋友可以參考下

一.前言

     根據(jù)客戶反饋,在進(jìn)行文件下載的時(shí)候,新增遠(yuǎn)程共享目錄,下載對應(yīng)的文件到遠(yuǎn)程共享目錄,采用常用的IO操作模式,提示下載成功,但是客戶去遠(yuǎn)程共享目錄查看對應(yīng)的下載文件,反饋說沒有找到對應(yīng)的文件。要求系統(tǒng)需要支持上傳遠(yuǎn)程共享目錄,為什么有一個(gè)這樣的需求?由于下載的文件涉及到了支付文件,里面的金額不允許進(jìn)行修改,如果放在本地路徑有可能會不會出現(xiàn)人為的修改,一般涉及到錢的問題,客戶都是比較謹(jǐn)慎的,剛好沒有接觸過操作遠(yuǎn)程共享目錄的,就google了一下看有沒有對應(yīng)的操作說明,下面簡單總結(jié)一下。

二.遠(yuǎn)程共享目錄操作

1、需要下載對應(yīng)的jcifs-1.3.18.jar,本例子采用3.18版本的,下載鏈接:https://jcifs.samba.org/

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

3、從遠(yuǎn)程共享目錄下載文件

/**
  * 方法說明:從遠(yuǎn)程共享目錄下載文件
  * @param localDir   本地臨時(shí)路徑
  * @param removeDir  遠(yuǎn)程共享路徑
  * @param _fileName  遠(yuǎn)程共享文件名
  * @param removeIp   遠(yuǎn)程共享目錄IP
  * @param removeLoginUser 遠(yuǎn)程共享目錄用戶名
  * @param removeLoginPass 遠(yuǎn)程共享目錄密碼
  * @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、上傳文件都遠(yuǎn)程共享目錄

/**
  * 方法說明:上傳文件到遠(yuǎn)程共享目錄
  * @param localDir   本地臨時(shí)路徑(A:/測試/測試.xls)
  * @param removeDir  遠(yuǎn)程共享路徑(smb://10.169.2.xx/測試/,特殊路徑只能用/)
  * @param removeIp   遠(yuǎn)程共享目錄IP(10.169.2.xx)
  * @param removeLoginUser 遠(yuǎn)程共享目錄用戶名(user)
  * @param removeLoginPass 遠(yuǎn)程共享目錄密碼(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);
   // 權(quán)限驗(yàn)證
    auth = new NtlmPasswordAuthentication(removeIp, removeLoginUser, removeLoginPass);
   SmbSession.logon(address,auth); 
   //遠(yuǎn)程路徑判斷文件文件路徑是否合法
   SmbFile remoteFile = new SmbFile(removeDir + dir.getName(), auth);
   remoteFile.connect();  
   if(remoteFile.isDirectory()){ 
    retVal = -1;
   }
   // 向遠(yuǎn)程共享目錄寫入文件
   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 可以在處理大文件時(shí),提升性能
  *
  * @param file 文件
  * @return 字節(jié)數(shù)組
  * @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();
   }
  }
 }

總結(jié)

以上所述是小編給大家介紹的Java遠(yuǎn)程共享目錄的操作代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 如何獲取java類中的屬性注釋

    如何獲取java類中的屬性注釋

    在開發(fā)中,有時(shí)需要獲取Java類的屬性注釋,尤其是當(dāng)JPA生成的表缺少注釋時(shí),可以通過jdk自帶的tools.jar工具包來實(shí)現(xiàn),方法類似于生成javadoc文檔,需要在pom.xml文件中導(dǎo)入tools.jar的依賴,該jar文件一般位于JAVA_HOME/lib目錄下
    2024-09-09
  • 關(guān)于springcloud報(bào)錯(cuò)報(bào)UnsatisfiedDependencyException的問題

    關(guān)于springcloud報(bào)錯(cuò)報(bào)UnsatisfiedDependencyException的問題

    這篇文章主要介紹了關(guān)于springcloud報(bào)錯(cuò)報(bào)UnsatisfiedDependencyException的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • sentinel流量控制框架(目錄設(shè)置)

    sentinel流量控制框架(目錄設(shè)置)

    Sentinel?是面向分布式服務(wù)架構(gòu)的高可用流量防護(hù)組件幫助開發(fā)者保障微服務(wù)的穩(wěn)定性,本文重點(diǎn)給大家介紹sentinel流量控制框架的相關(guān)知識,感興趣的朋友一起看看吧
    2022-03-03
  • springBoot項(xiàng)目啟動類啟動無法訪問的解決方法

    springBoot項(xiàng)目啟動類啟動無法訪問的解決方法

    這篇文章主要介紹了springBoot項(xiàng)目啟動類啟動無法訪問的解決方法,需要的朋友可以參考下
    2018-10-10
  • Java程序打印奧林匹克標(biāo)志方法詳解

    Java程序打印奧林匹克標(biāo)志方法詳解

    這篇文章主要介紹了Java程序打印奧林匹克標(biāo)志方法詳解,需要的朋友可以參考下。
    2017-09-09
  • springboot使用定時(shí)器@Scheduled不管用的解決

    springboot使用定時(shí)器@Scheduled不管用的解決

    這篇文章主要介紹了springboot使用定時(shí)器@Scheduled不管用的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java正則實(shí)現(xiàn)各種日期格式化

    java正則實(shí)現(xiàn)各種日期格式化

    本文給大家分享的是使用java結(jié)合正則表達(dá)式來實(shí)現(xiàn)各種日期的格式化功能,代碼非常的簡單,有需要的小伙伴可以參考下。
    2015-05-05
  • MyBatis中通用SQL寫法的幾種方法實(shí)現(xiàn)

    MyBatis中通用SQL寫法的幾種方法實(shí)現(xiàn)

    本文介紹了MyBatis中常見的幾種通用SQL寫法,包括批量操作、動態(tài)SQL、多條件分支查詢、SQL語句優(yōu)化、自動生成主鍵、注解方式以及高級映射等,感興趣的可以了解一下
    2024-12-12
  • Spring Boot 配置隨機(jī)數(shù)的技巧代碼詳解

    Spring Boot 配置隨機(jī)數(shù)的技巧代碼詳解

    這篇文章主要介紹了Spring Boot 配置隨機(jī)數(shù)技巧,spring boot 支持在系統(tǒng)加載的時(shí)候配置隨機(jī)數(shù),具體實(shí)例代碼大家參考下本文
    2018-05-05
  • SpringMVC中的SimpleUrlHandlerMapping用法詳解

    SpringMVC中的SimpleUrlHandlerMapping用法詳解

    這篇文章主要介紹了SpringMVC中的SimpleUrlHandlerMapping用法詳解,SimpleUrlHandlerMapping是Spring MVC中適用性最強(qiáng)的Handler Mapping類,允許明確指定URL模式和Handler的映射關(guān)系,有兩種方式聲明SimpleUrlHandlerMapping,需要的朋友可以參考下
    2023-10-10

最新評論

青川县| 酒泉市| 泸西县| 通化县| 灵武市| 潢川县| 乳源| 绥宁县| 迁安市| 阿尔山市| 宜黄县| 嘉黎县| 馆陶县| 河津市| 托克逊县| 彭山县| 湾仔区| 湾仔区| 息烽县| 利辛县| 北海市| 手游| 商南县| 靖宇县| 瑞金市| 枣阳市| 惠来县| 东辽县| 阿尔山市| 奈曼旗| 惠州市| 儋州市| 海兴县| 滨州市| 双辽市| 麻城市| 永丰县| 康保县| 中方县| 八宿县| 万源市|