求文件读写高手
请问用什么方式把一个int(4位)整数写入文件,写入后文件的大小为4个字节,并且用文本查看器可以读出来数据。
我尝试了各种方法的各种编码去写入,要么就是一个字节,要么就是4个字节但是用文本查看器打开有乱码,特地请高手赐教!
------解决方案--------------------
------解决方案--------------------文件都是以二进制形式保存在磁盘中的,windows下文本查看器用的是GBK编码进行查看文件的。
所以你必须先转成字符串(GBK), 而文件的存储大小与系统所采用的存储文件系统有关。
------解决方案--------------------我想普及一下基本常识,这个问题关键根本不在于int的的范围能不能放下,顺便甩2楼脸!你是不是程序员?
一个int型到底占几个字节,这不取决于语言或是什么的,取决于CPU是机器字长
8位的CPU,8位等于1字节
16位的CPU,16位等于1个字节
以此类推
为什么呢,因为计算机中最小的单位就是bit!哪怕你要存再小的数据,比如你要存个int 1
在8位CPU里,就是0000-0001 在16位里就是00000000-00000001
前者占1个字节,后者占1个字,也就是2个字节。虽然都表示一个int型
8位CPU里,最大只能放 2^8次方,-255~255 LZ说要放4位数的int型
倒过来推,拿出你的计算机,输入9999,然后转成2进制是多少0010 0111 0000 1111
也就是说,其实我只需要2个字节就足够放这些数据了,既然楼主给了4个字节,为什么不能放?2楼
知道为什么教科书上说int = 4 个字节,因为现在32位的计算机普及了,32/8 = 4 明白?
楼主的关键问题在于什么!输入跟输出完全不是一码事!你用文本编辑器,去打开这个文件,文本编辑器,默认能看懂的都是字符串,你往里面写的是int,你往外面读的是String 能看懂就奇怪了!
就好比你用ISO-8859-1 去对于一个字符串编码,然后用UTF-8解码,你看到的可能一样吗?这只是个例子,极端情况下也可能一样!
总之,输入跟输出要保持一致
------解决方案--------------------现在我写入一个int数据,4字节
Java code
public static void main(String[] args) {
try {
RandomAccessFile accessFile = new RandomAccessFile(
"D://chablis.txt", "rw");
ByteBuffer buffer2 = accessFile.getChannel().map(
MapMode.READ_WRITE, 0, 4);
buffer2.asIntBuffer().put(5421);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}