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 theread4
API, implement the functionint read(char *buf, int n)
that readsncharacters from the file.
Note:
Theread
function may be called multiple times.
/* 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
*/
int buffIndex = 0;
int buffCount = 0;
char[] buff = new char[4];
public int read(char[] buf, int n) {
int index = 0;
while (index < n){
if (buffIndex == 0){
buffCount = read4(buff);
}
if (buffCount == 0) break;
while (index < n && buffIndex < buffCount){
buf[index++] = buff[buffIndex++];
}
if (buffIndex >= buffCount) buffIndex = 0;
}
return index;
}
}