台灣最大程式設計社群網站
線上人數
1163
 
會員總數:242629
討論主題:187612
歡迎您免費加入會員
討論區列表 >> VB.NET >> 如何以DirectoryInfo取得資料夾中即時檔案資訊
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
如何以DirectoryInfo取得資料夾中即時檔案資訊
價值 : 50 QP  點閱數:246 回應數:6

樓主

Tina
門外漢
0 1
34 3
發送站內信

  我的程式會每2分鐘將特定資料夾檔案刪除,並複製新檔案進去。
  現在遇到的問題是每2分鐘取得最新檔案時,我用的directoryInfo取得的都是之前一批的檔案資訊。例如:程式開始執行時,資料夾中檔案為0001~0020的檔案,2分鐘後已經更新為0021~0040的檔案了,我的directoryInfo取得的file仍舊為0001~0020,等到我的資料夾檔案更新為0041~0060時,我的directoryInfo取得的file才會變成0021~0040,然後就會出現找不到檔案的錯誤訊息…我做了好幾次的directoryInfo的refresh,也是沒用

搜尋相關Tags的文章: [ directoryInfo ] , [ 即時 ] ,
本篇文章發表於2018-01-16 17:07
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

苦命小IT
檢舉此回應
在此貼上程式碼


本篇文章回覆於2018-01-16 17:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
我覺得你的問題應該是卡在...

timer1與timer2執行時間發生衝突...

timer1負責項目:
KillOldData() '刪除舊資料
GetData() '取得新資料, 並將檔名寫入至fileArray

timer2負責項目:
將fileArray的內容逐一列出來(每次都只顯示fileArray的一個圖檔)...

================
一旦timer2在執行的時候,timer1把資料砍了,
馬上就會發生找不到檔案的狀況


就變成你的timer2正在存取0001~0020其中一個檔案時,
2分鐘到了,timer1啟動,把檔案都砍了,改copy 0021~0040到目錄中,然後就發生錯誤...

本篇文章回覆於2018-01-17 13:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

苦命小IT
檢舉此回應
先感謝小羊窒息大大回應!
我在timer1時,就已經將檔案存往各個批號的資料夾,也將路徑、檔名記錄到PicArray與FileArray,所以應該不會找不到檔案。
最大的問題在於directorInfo.getfiles時,取得的檔名資訊跟我實際在資料夾中看到的資訊是有時間落差的!!
一直找不到讓他們同步的方式!!
本篇文章回覆於2018-01-17 14:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
最有價值解答

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
你先試著不要刪檔...

先只做move行為
(依照你的程式邏輯,應該有另一隻程式負責讓D:\DiamondJpg\temp持續增加檔案)

你只需要讓 D:\DiamondJpg\裡面的檔案,
從一開始的0000~0020
變成 0000 ~ 0040 (增加0021~0040)
變成 0000 ~ 0060 (增加0041~0060)

一直增加看看,然後看看是不是在列出檔案數量時,固定都會少一批(最新從temp資料夾搬進去的一律不認得!??)

================
(可能的話獨立寫一隻程式,只做這件事,盡量把範圍縮小,比較容易找出問題)
本篇文章回覆於2018-01-17 14:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
怎麼突然close了??

找到原因了??
本篇文章回覆於2018-01-18 09:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

苦命小IT
檢舉此回應
我把問題解決了!!
依小羊窒息大大的建議,盡量去縮小範圍後
我不再使用shell方式
在程式中以開始執行getdata這個sub的時間做判斷,小於這個時間的點的檔案抓出來處理,處理後刪掉
這樣就不用管directorInfo回報的資訊是否正確!
測試到目前可以持續運轉4個小時左右不產生問題,所以我把這個問題close了!
感謝您~
本篇文章回覆於2018-01-18 10:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.