我在 sdcard 上有一个文件正在被应用程序不断写入,我需要在应用程序写入时将文件从设备中提取到我的 Windows 主机上以进行进一步分析。
adb pull
不好,因为它会拉出整个文件然后停止,但当然文件仍在写入中。无论如何,文件变得非常大,所以我不想每次都复制整个文件,只是我上次阅读后写入的部分。
adb shell dd
可能是一个选项,但我只能将它从 sdcard 上的一个文件复制到 sdcard 上的另一个文件,即不是我的 Windows 机器:
例如adb shell dd if=/sdcard/input.pcm of=/sdcard/output.pcm
,然后使用跳过并寻找 dd 选项。
如果我使用 dd 和 pipe::adb shell dd if=/sdcard/input.pcm > output.pcm
输出文件有一些损坏:0x0D,0x0D 被随机添加到 pcm 数据中。就像我只做 adb shell cat input.pcm 一样。
我还考虑将数据写入 logcat 并对其进行解析,但这相当笨重和混乱,并且有大量数据。
另一种选择可能是将文件拆分为许多正在写入的小文件,然后使用 adb pull。
这些都不是理想的。理想情况下,我希望主机上有一个程序可以在我的控制下提取数据,例如 fopen、fread 等。但我不确定这是否可能。
谁能建议我如何能够满足我的要求:
- 读取 Windows 主机可用的所有文件
- 读取自我上次读取以来已更新的文件部分(例如每 100 毫秒)
提前谢谢了。