如何避免回车换行对

时间:2011-06-20 11:31:42

标签: android linux terminal cmd

我使用以下命令从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来更改终端的设置,但没有运气。

谁在做这些改变? 如何避免它们????

1 个答案:

答案 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());

现在两个操作系统的输出文件都相同。