ref http://blog.csdn.net/u013325815/article/details/41892135
The API: int read4(char *buf)
reads 4 characters at a time from a file.
The return value is the actual number of characters read. For example, it returns 3 if there is only 3 characters left in the file.
By using the read4
API, implement the function int read(char *buf, int n)
that reads n characters from the file.
Note:
The read
function will only be called once for each test case.
思路和code完全照抄,绿字部分
/* The read4 API is defined in the parent class Reader4. int read4(char[] buf); */ public class Solution extends Reader4 { /** * @param buf Destination buffer * @param n Maximum number of characters to read * @return The number of characters read */ public int read(char[] buf, int n) { char[] buffer = new char[4]; boolean eof= false; int doneRead= 0; int bytes = 0; while(!eof&& doneRead<n){ int size = read4(buffer); if(size<4){ eof= true; } bytes = Math.min(n-doneRead,size); for(int i=0; i<bytes; i++){ buf[doneRead+i] = buffer[i]; } doneRead+= bytes; } return doneRead; } }