[問題] 檔案讀取特定區塊內容

看板java作者 (...)時間3年前 (2021/07/25 11:10), 3年前編輯推噓4(4015)
留言19則, 6人參與, 最新討論串1/2 (看更多)
我有一個檔案內容部分格式大概像這樣: text1: abc text2: 1234 block1: line1: 123456 line2: abcd line3: abc/123 block2: line1: aabbcc line2: 0123456 line3: 123123 檔案內容有其他人會寫檔 所以每個區塊的內容及行數會變 但是每個區塊內的tag名稱不變 有時候某些tag那一列會不見 如果我想讀出特定的區塊及他的內容 像是指定block1 就讀出block1底下的line1~3的所有內容 請問有比較好的做法嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 150.117.35.4 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/java/M.1627182650.A.517.html ※ 編輯: t78923t (150.117.35.4 臺灣), 07/25/2021 11:11:56

07/25 11:59, 3年前 , 1F
正則表示法
07/25 11:59, 1F

07/25 21:50, 3年前 , 2F
把全部block當篩選條件 每行判斷,遇到就往下讀三行
07/25 21:50, 2F

07/25 21:50, 3年前 , 3F
如果block會不見的話,建議先找找不見的原因為何
07/25 21:50, 3F

07/25 21:50, 3年前 , 4F
或加入其他判斷條件
07/25 21:50, 4F
這可能不太行 因為內容會變 不是每次都是三行

07/26 11:04, 3年前 , 5F
你的檔案是純文字檔? 縮排是真的這樣? text、block、line有
07/26 11:04, 5F

07/26 11:05, 3年前 , 6F
固定格式? 檔案大小? 你現在的作法和你覺得有問題的點?
07/26 11:05, 6F

07/26 11:05, 3年前 , 7F
解法可以包含改檔案格式? 覺得你的問題不是很清楚
07/26 11:05, 7F

07/26 12:01, 3年前 , 8F
你的block的level是不是應該與text的level相同?如果是那
07/26 12:01, 8F

07/26 12:01, 3年前 , 9F
格式就是yaml,有現成的liberary可以處理
07/26 12:01, 9F
不是同level 不過是yaml沒錯 其實原本要用snakeyaml套件去讀寫 但我的maven 打包這套件一直包不進去 有想過能不能轉成json 讓我能直接用tag取裡面的值但沒找到yaml轉json的相關做法 只好先當作一般文字檔來讀 ※ 編輯: t78923t (150.117.35.4 臺灣), 07/26/2021 20:05:40 ※ 編輯: t78923t (150.117.35.4 臺灣), 07/26/2021 20:16:21

07/26 20:27, 3年前 , 10F
是yaml就直說啊... 比較好的方法不就是把你打包問題修好.
07/26 20:27, 10F
有試過 但一直修不好 目前是在IDE上跑可以 打包後執行就會找不到套件... 時間有限 只好先換方法做了 ※ 編輯: t78923t (150.117.35.4 臺灣), 07/26/2021 21:23:31

07/27 11:37, 3年前 , 11F
用有限狀態機的模式下去寫,讀到一行判斷next state,視情
07/27 11:37, 11F

07/27 11:38, 3年前 , 12F
況決定需要幾行look ahead,把讀進來的look ahead未使用時
07/27 11:38, 12F

07/27 11:39, 3年前 , 13F
塞入陣列buffer,主程式要讀取一行去一個專用函式要,該專
07/27 11:39, 13F

07/27 11:39, 3年前 , 14F
用函式先從look ahead buffer抓,沒東西才讀檔
07/27 11:39, 14F

07/27 11:41, 3年前 , 15F
IDE找得到,通常是先用到IDE內部的lib了,解決這點搞不好更
07/27 11:41, 15F

07/27 11:41, 3年前 , 16F
省時
07/27 11:41, 16F

08/02 13:29, , 17F
早晚要解決打包問題的,畢竟不是什麼都有辦法自己
08/02 13:29, 17F

08/02 13:29, , 18F
寫,可執行jar檔的包法有點不一樣,印象中maven官
08/02 13:29, 18F

08/02 13:29, , 19F
網有範例
08/02 13:29, 19F
文章代碼(AID): #1W_DOwKN (java)
文章代碼(AID): #1W_DOwKN (java)