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

说说二进制I/O的疑问
二进制I/O这一章在讲随机访问文件时(RandomFileStream)通过和其他流的对比来说明它的优点的:“到现在为止,所使用的数据流都是只读的或者只写的。这些数据流的外部文件都是顺序文件,如果不创建新文件就不能更新它们。”为什么不创建新文件就不能更新它们呀。求大神给个例子超度超度我。

------解决方案--------------------
引用:
二进制I/O这一章在讲随机访问文件时(RandomFileStream)通过和其他流的对比来说明它的优点的:“到现在为止,所使用的数据流都是只读的或者只写的。这些数据流的外部文件都是顺序文件,如果不创建新文件就不能更新它们。”为什么不创建新文件就不能更新它们呀。求大神给个例子超度超度我。


楼主,我手头资料没有你的那句话,但是我手头学习资料有这么一句话“RandomFileStream类提供了一个文件指针,用来标识要进行读写操作的下一数据的位置”

我自己对这句抽象的话理解是参照链式表,可以随时打断指向重新建立。
底层实现,猜想类似arraylist和linkedlist区别。

不一定对,我也刚学习到这块。
------解决方案--------------------
RandomAccess

引用:
import java.io.*;
 public class TestFileStream {
 public static void main(String[] args){
 int[] a= new int[10];
 try{
 FileInputStream input = new FileInputStream("test.dat");
         FileOutputStream output = new FileOutputStream("test.dat");         for(int i=0;i<10;i++){
 output.write(i);
     }
     output.close();
     int value;
     while((value=input.read())!=-1){
      System.out.println(value);
     }
     input.close();
 }catch(IOException ex){
 ex.printStackTrace();
 } 
 }
 }

可以参阅FileInputStream的源码:

public FileInputStream(String name) throws FileNotFoundException {
        this(name != null ? new File(name) : null);
    }

实际上还是new 了File的。