我正在使用以下命令从 Android 手机中提取调试跟踪(二进制形式):
adb logcat -B > input.bin
然后我将此二进制数据 (input.bin) 提供给解析它的 python 脚本。
我面临的问题是在 input.bin 中:
当在 Linux shell 中发出上述命令时,0A(换行符)将被 0D0A(CR 和 LF)替换。
当在 Windows 命令提示符下发出上述命令时,0A(换行符)将被 0D0D0A 替换。
我不想要这种行为。
我试图通过将 onlcr 更改为 -onlcr 来更改我的终端设置,但没有成功。
谁在做这些改变??? 如何避免它们????
最佳答案
问题是 Linux 仅使用 LF 换行 (\r),而 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());
现在两个操作系统的输出文件相同。
关于android - 如何避免回车线馈送对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6410488/