我使用以下命令从Android手机中调试Traces(二进制形式):
adb logcat -B > input.bin
然后我将这个二进制数据(input.bin)提供给一个解析它的python脚本。
我面临的问题是在input.bin:
当在Linux shell中发出上述命令时,<0> 0A(换行符)被0D0A(CR和LF)替换。 当在Windows命令提示符下发出上述命令时,<0> 0(换行符)正被0D0D0A替换。我不想要这种行为。
我尝试通过将onlcr更改为-onlcr来更改终端的设置,但没有运气。
谁在做这些改变? 如何避免它们????
答案 0 :(得分:0)
问题是Linux仅使用LF作为换行符(\ r \ n),而Windows使用(\ 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());
现在两个操作系统的输出文件都相同。