sprnate
2015-03-11 09:38
import java.io.*;
public class Test {
public static void main(String[] args)throws Exception{
File file = new File("test/test.txt");
RandomAccessFile raf = new RandomAccessFile(file, "rw");
//写入文件
int i = 0x7fffffff;
raf.write(i >>> 24);
raf.write(i >>> 16);
raf.write(i >>> 8);
raf.write(i);
//从文件读取
raf.seek(0);
byte[] b = new byte[4];
raf.read(b);
String s = new String(b,"utf-16be");//utf-16be换成项目默认的编码,读出来也是乱码
System.out.println(s);
raf.close();
}
}运行结果:

期待的效果是读出“2147483647”这个数字,即0x7fffffff的十进制表示。那么代码该怎么修改呢??
还有一个问题:无符号右移运算符>>>换成右移运算符>>应该也可以吧?
使用:System.out.println(raf.readInt());
就可以读出你想要的数了。
System.out.println(Arrays.toString(b));
输出为:[127, -1, -1, -1]
应该读不出数字,因为你写进去的时候也不是这些数字。你可以把移位后的值输出来看看。
文件传输基础——Java IO流
133841 学习 · 1060 问题
相似问题
回答 2
回答 3