FileInputStream in=new FileInputStream("D:\\test.txt");
FileOutputStream out=new FileOutputStream("D:\\out.txt");byte[] buff=new byte[1024];int len=in.read(buff);while(len!=-1)
{
    out.write(buff,0,len);
    len=in.read(buff);
}in.close();
out.close();我的问题:
这里定义一个1024长的byte数组,是不是使用in.read(buff)以后,下次再使用自动从上次结尾处开始读取?
如果是这样,如何在不重新定义新的输入流的情况下,重新定位到文件头开始读取?

解决方案 »

  1.   

    如果文件比较小,外加一个BufferedInputStream.缓存起来就可以了如果文件比较大,不能全部缓存的话,改用 RandomAccessFile,或者使用 RandomAccessFile + FileChannel
      

  2.   

    重新定位到文件头开始读取?
    可以用字符流的和reset方法,字节流不支持BufferedReader in = new BufferedReader(new FileReader("e:\\1.txt"));
    char[] buff = new char[2];
    int len = in.read(buff);
    in.(0);
    //死循环了
    while (len != -1) {
    System.out.println(new String(buff));
    in.reset();
    len = in.read(buff);
    }
    in.close();
      

  3.   

    to 楼上
    字节流也有 BufferedInputStream 的
      

  4.   

    用这个类吧 有个seek方法会让你满意的
    RandomAccessFile