前不久面试android软件开发的时候,经理曾经跟我讨论过layout文件夹下的文件加密问题,一时想不出,经提醒得知可以二进制写入sdk,并在写入过程中加入干扰码,读取的时候排除干扰码即可,这确实是一个不错的选择。下面说的这个方法则是在操作系统中以二进制拷贝文件的巧妙用途。

写此文的起因是在微酷网志看到一篇《把压缩文件变成图片的方法》,起初对文章并不感兴趣,无意间看了下,原来是说windows下的copy命令,这个以前也用过,不过因为windows的资源管理器过于强大,一般就不怎么用了。看过之后得知,文章大意就是说可以将两个文件,一个图片和一个压缩文件同时拷贝到一个文件中,这时候只能显示前者,而改了扩展名则显示后者。这点之前小子还真没深究过,原文步骤如下。

1、准备图片文件1.jpg放在D盘根目录。
2、准备压缩好的RAR文件1.rar放D盘根目录。
3、运行CMD命令:copy/b d:1.jpg+d:1.rar d:2.jpg

查了下copy命令的帮助,显示如下。

C:\Users\Administrator>copy /?
将一份或多份文件复制到另一个位置。

COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/L] [/A | /B ] source [/A | /B]
[+ source [/A | /B] [+ …]] [destination [/A | /B]]

source 指定要复制的文件。
/A 表示一个 ASCII 文本文件。
/B 表示一个二进位文件。
/D 允许解密要创建的目标文件
destination 为新文件指定目录和/或文件名。
/V 验证新文件写入是否正确。
/N 复制带有非 8dot3 名称的文件时,
尽可能使用短文件名。
/Y 不使用确认是否要覆盖现有目标文件
的提示。
/-Y 使用确认是否要覆盖现有目标文件
的提示。
/Z 用可重新启动模式复制已联网的文件。
/L 如果源是符号链接,请将链接复制
到目标而不是源链接指向的实际文件。

命令行开关 /Y 可以在 COPYCMD 环境变量中预先设定。
这可能会被命令行上的 /-Y 替代。除非 COPY
命令是在一个批处理脚本中执行的,默认值应为
在覆盖时进行提示。

要附加文件,请为目标指定一个文件,为源指定
数个文件(用通配符或 file1+file2+file3 格式)。

原来/b参数就是以二进制保存了,这下就容易理解了。命令就是将前面两个合并起来存储了,扩展名相同则会显示前者,不同则根据扩展名显示不同的文件。

在linux环境下,查了下cp貌似不可以,可以使用cat来实现相同的效果,不过身边没有linux系统,就不再尝试了。这里仅作分享。

另外有一点就是,后面的文件需要是二进制的形式存储的,不然读取的时候就读取不出来了,就比如,执行命令copy/b d:a.rar+b.jpg c.jpg,这样是不能成功的,因为jpg的格式问题导致了乱码,好了直说这么多,其他大家考究吧,小子也对这个不大熟悉,系统文件存储的问题,还是找系统方面的人来解答比较好。

想必看到这里大家应该也有点想法了吧?这样以来,有些时候如果有需要保密的文件就可以使用命令来保存了,不过个人认为现实中使用此类文件没多大用处,特别是普通用户文件仅做本地存储的就更没有用处了,如果用到其他地方的话,还是可以考虑滴,比如上传某些附件到仅支持图片附件的网站(点到为止),这点貌似早就实现了,只是小子不知道具体实现方式,这里低调分享下吧,知道的勿拍。