2017-04-13 82 views
-2

我有一個程序特定的二進制文件(Altium PCB庫(.PcbLib)),我想讀作爲.txt文件來解析數據。無論如何,我可以在C#中做到這一點?讀取程序特定的二進制文件作爲.txt文件

編輯:我知道我可以把它保存爲一個.txt然後打開它,我需要從文件中獲得的信息以純文本形式顯示(與垃圾混合在一起)。我知道我可以運行代碼將文件保存爲.txt文件,然後打開該文件以解析我的數據,但是我想知道是否有一些我可以做的事情不必將文件另存爲.txt。

如果打開爲.txt文件包含文本,如:

「| LIBREF0 =的Fiducial | COMPDESCR0 =基準點| PARTCOUNT0 = 2 | LIBREF1 = MOUNT_HOLE | COMPDESCR1 = 6-32安裝孔| PARTCOUNT1 = 2 |」

,我會爲了得到每個「LibRef文件」名稱,比如「的Fiducial」,「MOUNT_HOLE」等進行解析...

+5

你可以閱讀任何文件作爲文本,但這並不意味着它會有道理.. – BugFinder

+0

你沒有給我們足夠的信息。這是什麼文件類型?它是文本數據還是二進制文件?我們無法用您提供給我們的有限數量的信息來回答。你做了什麼研究?你應該停下來看看[問]。 –

+0

這是一個特定於程序的二進制文件,但是如果我將其另存爲.txt然後將其打開,則需要從文件中獲取的信息以純文本形式顯示。我知道我可以運行代碼將文件保存爲.txt文件,然後打開該文件以解析我的數據,但是我想知道是否有一些我可以做的事情不必將文件另存爲.txt。 –

回答

1

文件擴展名只存在作爲指標的程序和用戶爲內容一個文件,以便匹配應用程序關聯並向開放應用程序提供指令。任何以純文本形式存儲的內容都將以StreamReader()或類似內容讀取。
問題出在哪裏文件是而不是純文本,你想閱讀它們作爲一個。根據this link,該文件是一個二進制庫。您無法將文本作爲專有庫讀取。只有在不知道如何轉換文件內容的情況下才會發生。對於像這樣的專有文件類型,您可能需要從創建該文件的應用程序的開發人員那裏獲得插件。鑑於他們不希望你做你想做的事情,並且寧可賣給你一件產品,你的目標可能也不會發生。

+0

這是一個特定於程序的二進制文件,但如果將其另存爲.txt然後將其打開,則需要從文件中獲取的信息以純文本形式顯示。我知道我可以運行代碼將文件保存爲.txt文件,然後打開該文件以解析我的數據,但是我想知道是否有一些我可以做的事情不必將文件另存爲.txt。 –

+0

您必須有效地複製軟件正在執行的任何操作,這會使您回到剛描述的情況。如果開發人員願意與您共享一個API或庫,或者您已經有一個庫並且可以使用Reflection來調用它的方法,那麼這纔是真正實現這一目標的唯一方法。 – CDove