2011-06-20 87 views
1

我從Android手機使用下面的命令拉動調試跟蹤(二進制形式):如何避免回車換行符對

adb logcat -B > input.bin 

然後我饋送這個二進制數據(input.bin)到一個python腳本解析它。

我面臨的問題是,在input.bin:

0A(換行)是由0D0A(CR和LF)替代,上面的命令時在Linux外殼發出。

0A(換行符)被0D0D0A取代,當上述命令在Windows命令提示符下發出時。

我不想要這種行爲。

我試圖通過將onlcr更改爲-onlcr來更改我的終端的設置,但沒有運氣。

誰在做這些改變??? 如何避免它們?

回答

0

問題是,當Linux使用換行符(\ r)作爲換行符和回車符時,窗口使用(\ r \ n)作爲換行符。這是命令提示符下的默認行爲,因此我認爲您應該使用更復雜但通用的方法,即使用Java程序從此命令獲取輸出,並通過Writer類而不是輸出流將數據寫入文件。

Process exec = Runtime.getRuntime().exec("adb logcat -B");

BufferedWriter buffWriter = new BufferedWriter(new FileWriter("FileName"));

BufferedReader buffReader = new BufferedReader(new InputStreamReader(exec.getInputStream()));

buffWriter.write(buffReader.readLine());

現在輸出文件是相同的兩個操作系統。

+0

我可以做同樣的事情,通過Python提到上面嗎? – is0dvil

+0

抱歉,我對Python沒有任何想法。對不起,哥們 –