如题  我想实现删除一个大文件中任意一块内容 比如从文件的第99MB处删除往后1M的数据

解决方案 »

  1.   

    JAVA中好像没有直接的办法,可能需要你用一个99M的缓冲区去处理了,等这99M的缓冲区读满了后表明后面的1M是不要的了,不写出来就好了。但是IO的效率的话确实不高
      

  2.   

    我举的例子看来是不太好  但是如果我要删除这个5g文件中末尾1M的数据呢  难道要把5G的文件都慢慢读入内存么  这样做不仅速度慢得厉害而且占用内存也太多了
      

  3.   

    你可以了解一下,java随机读取---RandomAccessFile类
      

  4.   

    RandomAccessFile哪个方法可以做到,如何做?我其实也经常用这个类 没见哪个方法可以直接或者间接实现的
      

  5.   

    RandomAccessFile.skipBytes(int n)
    看看JDK API
      

  6.   

    LZ几位...都在说什么啊...
    对于文件中间进行修改操作,必然牵涉到流复制
    一般操作都是在需要更改的地方做标记,以你的删除动作来说
    在99M的地方记下文件指针pointer,接着再往后便宜1M的位置,记录第二个标记指针position
    然后将这个position地址指针之后的数据写到一个临时文件中
    重新定位原文件到指针位置到pointer,将临时文件中的内容重新回来,最后将文件做一个截断处理
      

  7.   

    用RandomAccessFile类中的seek(偏移量)函数移到你要开始读取的地方,然后开始读取的时候做个标记,当读到1M的时候就不读了,或者每次获取当前的指针位置,在进行判断。