我开发了一个J2ME应用程序,通过套接字连接到我的Web托管服务器。我使用自己扩展的lineReader类(它继承自基本的InputStreamReader)从服务器读取响应。如果服务器发送5行响应,则按行读取服务器响应的语法如下:
line=input.readLine();
line = line + "\n" + input.readLine();
line = line + "\n" + input.readLine();
line = line + "\n" + input.readLine();
line = line + "\n" + input.readLine();
在这种情况下,我可以编写这个语法,因为我知道回复的数量是固定的。但是如果我不知道行数,想要一次性读取整个inputStream,我应该如何修改当前的readLine()
函数。以下是该函数的代码:```java String readLine() throws IOException { StringBuffer sb = new StringBuffer(); int i = 0; while ((i = inputStream.read()) != '\n') { if (i == -1) break; sb.append((char)i); } return sb.toString(); } ```
public String readLine() throws IOException {
StringBuffer sb = new StringBuffer();
int c;
while ((c = read()) > 0 && c != '\n' && c != '\r' && c != -1) {
sb.append((char)c);
}
//By now, buf is empty.
if (c == '\r') {
//Dos, or Mac line ending?
c = super.read();
if (c != '\n' && c != -1) {
//Push it back into the 'buffer'
buf = (char) c;
readAhead = true;
}
}
return sb.toString();
}
readLine()
函数,使其能够一次读取整个流。希望你能理解我的问题。 - Sujit Agarwal