日期:2014-05-20  浏览次数:20720 次

求问一个关于IO 字节流概念上的小疑惑
都知道字节流都是一个个 8位的 Byte
如果我的一个文件里面 有4个 32位的一个 INT 数 那么需要 16个 BYTE 才能装下 假如 我用一个 BYTE数组 来储存这些 INT 值 那么这个数组的长度 就是 16了
问题是 :现在 我把这个 16为的数组 重新输出到一个 文件里面 那么 这个文件怎么知道 我是4个 INT 值 怎么才能还原 我这 4个 INT 而不是还原成 16个BYTE 呢?
请教各位大神给我解释一下


------解决方案--------------------
其实你想的思路没错啦,你这里指的文件仅仅是二进制的集合.它只认识1或0,你给什么,它存什么.你怎么解读是你的事,与它无关
你说的还原,不是文件会帮你还原,而是你自己的程序按自己的规则解构一个二进制文件而已

就像一个网页文件
notepad会按字符信息来片,所以打开是源码
而ie则打开是富文本的一种呈现
如果用winhex之类的16进制打开,则显示16进制的byte
------解决方案--------------------
你这个涉及到协议的知识
例如,自己设计一个协议来说吧,例如
某个简单的协议如下:
编号(int) 名称(string) 长度(long) 这样的内容可以这样存储在一个byte数组中

前4个字节带表编号,在程序中使用int类型来编解码,接下来5个字节代表名称,就按字符串来处理这5个字节,最后8个字节代表长度,则按long型读取。

推荐楼主看看tcp/ip socket in java这本书,对于网络编程来说,比较薄且非常经典。