【发布时间】:2015-12-21 03:27:47
【问题描述】:
我在我的代码中所做的只是使用FileOutputStream 的附加标志将标记和一些字符串数据附加到二进制文件中。现在,我如何从指定的标签开始阅读?我不知道从哪里开始。
文件和字符串的大小是可变的,所以我真的不能相信它。唯一不变的是标签。
编辑:我忘了提到该文件将从另一个线程/活动/应用程序/设备访问。
用于附加一些数据的代码:
String TAG = "CLIPPYDATA-";
String content = "The quick brown fox jumps over the lazy dog."; //size not fixed, sample purpose only.
FileOutputStream output = new FileOutputStream("/path/to/file", true);
try {
output.write((TAG + content).getBytes());
} finally {
//output.flush(); (should I?)
output.close();
}
样本输出:
yyvAžîéÃI&8QÀ Ø +ZŠ( ¢Š( ¢Š(ÿÙCLIPPYDATA-The quick brown fox jumps over the lazy dog.
示例输入:
yyvAžîéÃI&8QÀ Ø +ZŠ( ¢Š( ¢Š(ÿÙCLIPPYDATA-The quick brown fox jumps over the lazy dog.
期望的输出:
CLIPPYDATA-The quick brown fox jumps over the lazy dog.
【问题讨论】:
-
为什么不把标签位置放在文件末尾呢?
-
如果您将标签位置放在文件末尾,比如说最后 8 个字节。然后您可以执行以下操作:读取最后 8 个字节 -> 获取标签的位置 -> 寻找位置 -> 读取标签和内容
-
@bladefury 它已经在文件末尾了。文件内容 -> 标签 -> 内容。我只是附加了新数据。无论如何,我认为您是说我也应该放置附加数据开始的位置,对吗?
-
是的,在附加标签和内容后附加位置信息
-
@bladefury 听起来很合法。我试试看。
标签: java android string file-io binaryfiles