本帖最后由 戴振良 于 2012-3-31 23:09 编辑
private native void writeBytes(byte b[], int off, int len) throws IOException;
public void write(byte b[]) throws IOException {
writeBytes(b, 0, b.length);
}
上面这两个方法的代码是从FileInputStream类的源文件里复制过来的
在张孝详老师的视频里说,使用FileInputStream.write(byte b[])方法后,即使没有调用该类的flush()或者close()方法,bytep字节一样会写到文件去,这是因为在write方法里面调用了flush。
于是我找到源文件,想看看源代码中的write(byte b[])方法是不是真的调用了flush()方法和它是怎么把字节写到缓冲区的。我找到了write(byte b[])方法,它里面就调用了writeBytes(b, 0, b.length);这个方法,于是我找到了 private native void writeBytes(byte b[], int off, int len) throws IOException;这个,这里什么代码体都没有啊,它是怎么一回事呢?这代码有什么用啊,就抛出了个异常,还有这里的native是什么修饰符,干什么用的?
其实我最想知道的就是writeBytes(b, 0, b.length)方法里面的代码体,我想看看它里面有没有调用flush方法,希望大家先回答这个最主要的问题,谢谢!!!!!!!!{:soso_e183:} {:soso_e183:} {:soso_e183:} {:soso_e183:} {:soso_e183:}
|