FTP文件上傳及回執(zhí)文件下載并解析

FTP文件上傳及回執(zhí)文件下載并解析

功能簡(jiǎn)介:

操作1:將本地的訂單xml文件上傳到FTP上,然后在本地其他文件夾進(jìn)行備
份并刪除源文件。
操作2:將FTP上面其他公司上傳的訂單回執(zhí)Xml下載下來(lái)然后刪除,并將文
件解析存到數(shù)據(jù)中。

操作流程:

  • 使用說(shuō)明

    雙擊文件夾下的exe的執(zhí)行文件,程序就自動(dòng)運(yùn)行。關(guān)閉則需要啟動(dòng)任務(wù)管理器結(jié)束一下進(jìn)程即可。


  • 注意事項(xiàng)

    使用前需要在ftpConfig文件夾下的配置文件中配置好上傳和下載的路徑,否則程序會(huì)報(bào)找不到路徑的錯(cuò)誤!


  • 目錄說(shuō)明
  1. AddOrderParse.jar ——> java代碼(已安裝java環(huán)境的電腦上級(jí)即可執(zhí)行程序)

  2. libs ——> java程序所使用的依賴庫(kù),勿操作此文件夾。

  3. ftpConfig ——> 此文件夾下放置配置ftp的地址,用戶名和密碼。且還有相對(duì)應(yīng)的ftp上的文件路徑以及本地的文件路徑,均可再次配置。-----
    注意:需要確保配置的路徑均是真實(shí)的,否則會(huì)報(bào)錯(cuò)!并且最后一個(gè)文件夾后需要加上/

  4. log ——> 此文件放置程序執(zhí)行錯(cuò)誤的日志信息。

  5. addXml ——> 此文件為我調(diào)試用的本地的文件路徑,你可以自行在ftpConfig配置。

  6. jre ——> 此文件夾存放的是java的運(yùn)行環(huán)境,這樣即使電腦沒(méi)有安裝java環(huán)境,也可以執(zhí)行java的程序。不過(guò)有點(diǎn)大,待優(yōu)化。


  • 具體流程

    開(kāi)啟了一個(gè)定時(shí)器并開(kāi)辟了兩個(gè)線程,分別用來(lái)循環(huán)執(zhí)行上傳和下載兩個(gè)任務(wù)。循環(huán)時(shí)間設(shè)置為60s。

    1. 上傳訂單文件: 循環(huán)掃描本地上的orderXml存放路徑,有則上傳至ftp上,并在本地備份此文件。

    2. 下載回執(zhí)文件: 循環(huán)掃描ftp上的回執(zhí)文件存放路徑,有則下載至本地,按照日期創(chuàng)建文件夾存放文件,所以同一天的文件會(huì)放在一個(gè)文件夾下 。然后將下載的文件進(jìn)行解析添加至數(shù)據(jù)庫(kù)的表add_receipt中,字段與xml主題字體一致,并多了一個(gè)記錄添加時(shí)間的字段。由于暫不知道篩選條件,所以目前的做法只是將所有的回執(zhí)文件解析成對(duì)象并添加,所以數(shù)據(jù)庫(kù)中會(huì)出現(xiàn)同一訂單的多個(gè)狀態(tài)。


  • 待優(yōu)化

  1. 還需新增定時(shí)刪除過(guò)期文件夾的功能。
  2. 回執(zhí)文件沒(méi)有篩選直接添加至數(shù)據(jù)庫(kù)中,需要根據(jù)條件來(lái)更新過(guò)期的狀態(tài)。
  3. 日志記錄還不完善。
  4. 需要轉(zhuǎn)成C/S項(xiàng)目,實(shí)現(xiàn)可視化操作。

以上是寫(xiě)給公司操作人員的操作手冊(cè)



一點(diǎn)感想:

從老大讓我做這個(gè)東西到現(xiàn)在大概過(guò)了將近半個(gè)月的時(shí)間吧,其實(shí)程序不難,關(guān)鍵是前期的需求不明確,老大也是惜字如金!再加上我也只是剛學(xué)java,學(xué)我的mybatis學(xué)的開(kāi)開(kāi)心的,把我抓過(guò)來(lái)弄這個(gè),不過(guò)也是挺感謝他的。代碼這東西還是需要實(shí)戰(zhàn)的,光自己弄真的不行,感覺(jué)我這半個(gè)月了解的小知識(shí)比過(guò)去一個(gè)月看的東西掌握的還多。特別是最后需要打包成jar文件還需要轉(zhuǎn)成exe的可執(zhí)行文件并且需要將jre環(huán)境也一起打包來(lái)讓沒(méi)有安裝java環(huán)境的電腦用真的愁死我了,啥都不了解!原理不了解,做起東西來(lái)真的事倍功半啊?。?!


以上內(nèi)容寫(xiě)于22號(hào),你敢信第二天給同事用立馬就出錯(cuò)了么!?。?/h3>

真的無(wú)語(yǔ).......

因?yàn)橐粋€(gè)路徑的問(wèn)題導(dǎo)致我弄了兩天,特別我用的mac,不知道怎么連接他們加密的vpn,每次mac寫(xiě)完代碼然后打成jar包放到win下的電腦使用,然后一次次報(bào)錯(cuò)。特別本來(lái)一個(gè)小時(shí)就能弄好的問(wèn)題,耽誤了兩天!


代碼簡(jiǎn)介:

  • 項(xiàng)目目錄簡(jiǎn)介:
工程目錄
  1. bean層放的是bean對(duì)象。

  2. main是含有main方法的一個(gè)主體類。

  • ThreadUtils主要是開(kāi)辟兩個(gè)分線程分別用來(lái)執(zhí)行上傳和下載兩個(gè)進(jìn)程,通過(guò)輸出看到兩個(gè)線程的資源的確不是平均的,而且也只是一個(gè)進(jìn)程切換來(lái)切換去的。

  • TimerTaskUtils是用來(lái)開(kāi)啟定時(shí)器,沒(méi)60s執(zhí)行一次任務(wù)。

  1. mapper 和 mapperImp 這兩個(gè)是mybatis做數(shù)據(jù)持久層的實(shí)現(xiàn)。

  2. service是上傳和下載的具體業(yè)務(wù)邏輯實(shí)現(xiàn)類。

  3. utils是一系列的工具類,由上而下分別是:文件夾操作類、封裝了FTP常用方法的工具類、將一個(gè)map映射成一個(gè)對(duì)象的類、mybatis工廠的獲取類、XMl文件解析的工具

  • map映射成對(duì)象的類是看別人博客里面的項(xiàng)目所使用的工具類,直接復(fù)制的。。。(侵刪?。。。?/li>

代碼中需要注意的地方

  • FTP連接

     if (task.equals("orderXmlUpload")){
         //訂單xml上傳
         System.out.println("查找訂單文件" + new Date().toString());
         OrderInfoDeal.orderXmlUpload();
         FtpUtils.closeFtpClient(FtpUtils.getFTPClient());
     }else if(task.equals("receiptXmlDownload")){
         //回執(zhí)xml下載
         System.out.println("查找回執(zhí)文件" + new Date().toString());
         ReceiptDeal receiptDeal = new ReceiptDeal();
         receiptDeal.receiptXmlDownload();
         FtpUtils.closeFtpClient(FtpUtils.getFTPClient());
     }
    

有沒(méi)有注意到我的ftp是每次循環(huán)都會(huì)關(guān)閉的,因?yàn)槟悴魂P(guān)閉的話人家傳了新的東西到ftp上面你還是用原來(lái)的連接就更新不了別人新上傳的文件了。

  • 屬性文件亂碼問(wèn)題

      localOrderXmlPath = new 
      String(localOrderXmlPath.getBytes("ISO-8859-1"), "UTF-8");
    

    我把ftp的地址,用戶名還有密碼還有各種上傳下載的路徑都配置在配置文件里面。由于路徑有中文,所以直接讀出來(lái)是亂碼的,需要進(jìn)行轉(zhuǎn)碼才能正常使用。而且我是把ftp的相關(guān)配置放在外面,也就是不在src下面,這樣方便別人修改。


好吧,感覺(jué)很啰嗦但是又沒(méi)說(shuō)到重點(diǎn)。。。再次審視了下我的代碼都發(fā)現(xiàn)沒(méi)啥可說(shuō)的了。。。那就這樣吧,我把代碼上傳到github上面,有需要的小伙伴可以下載看一看,有啥問(wèn)題的可以聯(lián)系我。新手代碼有點(diǎn)渣,勿噴。

聯(lián)系方式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,694評(píng)論 19 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,323評(píng)論 25 708
  • 我叫王偉,一名普通的工人,住在普通一個(gè)小城W,干著普通的工作:搬運(yùn)工。工作幾年后娶了個(gè)老婆,生了個(gè)可愛(ài)的女兒,人生...
    大黃蜂_a757閱讀 969評(píng)論 3 9
  • 我剛剛走過(guò)這里, 路邊的樹(shù), 開(kāi)了花, 白色的, 紅色的, 掩映在夕陽(yáng)里, 很純粹,不裝飾, 我曾活過(guò), 連神情都...
    lize_333閱讀 350評(píng)論 0 1
  • 今天跟大家分享一下我對(duì)王陽(yáng)明心學(xué)的理解。 王陽(yáng)明是繼承了儒釋道、甚至鬼谷子和兵家的學(xué)說(shuō),集大成者創(chuàng)立了心學(xué)。 自己...
    貓黍閱讀 728評(píng)論 0 2

友情鏈接更多精彩內(nèi)容