java.io的 BufferedInputStream 有个skip()方法:
skip
public long skip(long n)
          throws IOException参见 InputStream 的 skip 方法的常规协定。 覆盖:
类 FilterInputStream 中的 skip
参数:
n - 要跳过的字节数。 
返回:
跳过的实际字节数。 
抛出: 
IOException - 如果流不支持查找操作;或者已经调用其 close() 方法关闭了此输入流;或者发生 I/O 错误。这里的参数和返回值是不一样的吗?我写了个for循环,第一至五次的n=1412,结果都是跳过了1412个字节,为什么在第六次时n还是1412,但是却跳过了1096个字节?我怎样才能让他一直按照n的值来跳呢?
请高手指教!

解决方案 »

  1.   

    字符类I/O流字符类用于处理16位Unicode码的流楼主的6次到流尾了吧
      

  2.   

    public long skip(long n) throws IOException { long remaining = n;
    int nr;
    if (skipBuffer == null)
        skipBuffer = new byte[SKIP_BUFFER_SIZE]; byte[] localSkipBuffer = skipBuffer;

    if (n <= 0) {
        return 0;
    } while (remaining > 0) {
        nr = read(localSkipBuffer, 0,
          (int) Math.min(SKIP_BUFFER_SIZE, remaining));
        if (nr < 0) {
    break;
        }
        remaining -= nr;
    }

    return n - remaining;
        }这是skip的源码 看里一下,他返回的是n - remaining 
    就是不明白remaining代表什么,高手帮忙看一下啊