最近在写java的IO操作的时候,本来想在读完文件之后再reset到文件头,发现老是报 invalid错误,最后发现原来那个参数是读取多少个字符之后就会失效。因此,设置((int)file.length() + 1),之后就没问题了。。但是这又带来另一个问题,如果file的长度超过了int的最大值,这个也会出问题,具体如何解决也没想到什么好办法。。希望大家共同探讨

解决方案 »

  1.   

    你有什么需求?也只是给你往后预读一点点吧
    你想预读到底?能不能说说你的需求看看,有没有其他方法。
    为什么要读完文件再reset到头呢?不如读2遍?
      

  2.   

    我的需求就是,在hadoop集群上有个文件,这个文件里面有一些字段,例子如下
    a=1
    b=2
    c=3
    我现在要根据一个key找到一行,然后返回,比如我想找a,就返回a=1,
    我现在要读取多次,为了提高效率,文件只打开一次,读取多次结束后关闭。
    现在就是读取某行后,不关闭文件在读取会接着这个行往下读,知道结束。所以要从头读。
    但是考虑到如果这个文件比较大,超过INT的最大值,就会有问题,请教大牛们有没有其他方法。
      

  3.   

    文件有多大?? 不是太大的读一遍全存在HashMap里
    key是a value是1get下就能拿到。太大的话读进来存到数据库,别听到数据库就觉得很大。
    SQLite这种小玩意用用也挺好。
      

  4.   

    现在文件看起来不大,但是以后如果数据量大的话这个文件存储的东西也就会多,
    数据库倒是有一个oracle数据库。如果放到数据库还得根老大讨论,改动比较大,因为掉这个文件的不只是java还有C++,所以还是想想看看程序上有没有解决的办法。