FileInputStream源码分析.docVIP

  • 3
  • 0
  • 约1.03万字
  • 约 16页
  • 2015-08-15 发布于重庆
  • 举报
FileInputStream源码分析.doc

近做一个很简单的函数,要两个返回值,我打算有一个类封装一下返回,后来领导要求使用StringBuilder返回,不用StringBuffer,因为局部变量StringBuffer最后还是要编译为StringBuilder,因为StringBuilder没有任何同步。 问了一下大家的看法,风南说InputStream 的int read(byte[] b) 从输入流中读取一定数量的字节并将其存储在缓冲区数组 b 中,也是类似的,看来有必要研究一下IO了。 InputStream类中重要的函数,只有一个抽象的有用, public abstract int read() throws IOException; 其他两个read的意义不大。 public int read(byte b[], int off, int len) throws IOException 和 public int read(byte b[]) throws IOException { return read(b, 0, b.length); } 下面看它的子类FileInputStream的实现, /* File Descriptor - handle to the open file */ private FileDescriptor fd; 这个很重要,这是文件句柄,C语言使用fopen函数的都知道。 /** * Opens the specified file for reading. * @param name the name of the file */ private native void open(String name) throws FileNotFoundException; /** * Reads a byte of data from this input stream. This method blocks * if no input is yet available. * * @return the next byte of data, or -1 if the end of the * file is reached. * @exception IOException if an I/O error occurs. */ public native int read() throws IOException; /** * Reads a subarray as a sequence of bytes. * @param b the data to be written * @param off the start offset in the data * @param len the number of bytes that are written * @exception IOException If an I/O error has occurred. */ private native int readBytes(byte b[], int off, int len) throws IOException; 子类修改了父的实现 /** * Reads up to b.length bytes of data from this input * stream into an array of bytes. This method blocks until some input * is available. * * @param b the buffer into which the data is read. * @return the total number of bytes read into the buffer, or * -1 if there is no more data because the end of * the file has been reached. * @exception IOException if an I/O error occurs. */ public int read(byte b[]) throws IOException { return readBytes(b, 0, b.length); } /** * Reads up to len bytes of data from this input stream * into an array of bytes. If len is not zero, the method * blocks until some input is available; otherwise, no * bytes are read a

文档评论(0)

1亿VIP精品文档

相关文档