阅读背景:

java I/O加强

来源:互联网 

import java.io.IOException; import java.io.RandomAccessFile; import org.junit.Test; /*用RandomAccessFile, * 数据流可以理解成静态摊在地上, * 由我们根据游标(第一次开时从0开始)在指定位置更更改内容(以byte为单位), * 如果位置计算不准确,那么会把旧数据破坏了。 * 读的时候也要精确计算出从什么位置开始读,读什么类型的数据(多长), * 否则数据读出来也是错误的。 * * raf创建一次,进行操作时,它的游标是连续变化的 * */ public class RandomAccessFileDemo { @Test public void w(){ try { RandomAccessFile raf=new RandomAccessFile("w.dxt", "rw"); raf.writeInt(100); raf.write(97); raf.write(353); //跟io流一样,write(int b)是只写最后一个字节数据:97 raf.writeUTF("湖南城市学院"); raf.close(); } catch (IOException e) { e.printStackTrace(); } } @Test public void r(){ try { RandomAccessFile raf=new RandomAccessFile("w.dxt", "r"); int r=raf.readInt(); System.out.println(r); raf.skipBytes(2); //控制游标往前跳2个字节 String str = raf.readUTF(); System.out.println(str); } catch (IOException e) { e.printStackTrace(); } } @Test//要注意控制游标 public void demo(){ try { RandomAccessFile raf = new RandomAccessFile("b.txt", "rw"); for(int i=0;i<4;i++){ raf.writeDouble(3.14*i); } //此时游标在第4个浮点数的末尾 //把游标定位到文件开始处 raf.seek(16);//raf.seek(12); raf.writeDouble(0); raf.seek(0); for(int i=0;i<4;i++){ double d = raf.readDouble(); System.out.println(i+": "+d); } raf.close(); } catch (IOException e) { e.printStackTrace(); } } } import java.io.IOException; import java.io.Random



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: