android - 如何避免回车线馈送对

标签 android linux terminal cmd

我正在使用以下命令从 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/

相关文章:

java - Android 自行旋转相机拍摄的照片

linux - 为什么Linux有4层 "page tables"以及它到底是如何工作的

Linux 命令循环

powershell - VS Code 从 powershell 打开新终端

linux - 通过树莓派传递IP摄像头

command-line - 终端错误 - 尝试任何命令时出现 "zsh: command not found"

java - 如何监听 RecyclerView 的 ItemTouchHelper 中的点击事件?

android - 调用 AAssetManager_fromJava 时崩溃 : "JNI WARNING: instance fieldID 0x571819bc not valid"

android - @Subscribe 方法为同一事件调用多次

C 编译器无法在 OpenSUSE 上创建可执行文件