Java: 为什么我不能将一个String convert 从StringBuffer 完整地输出到控制台?
Java: Why can't I output a String converted from StringBuffer to the console in it's entirety?
当我调试下面的代码时,在 "Variables" 视图中,response
和 this.response
都显示了来自 http://www.google.com 的全部 1,779 行流式输入。但是,如果我想使用 System.out.println(this.response.toString();
将 this.response
输出到控制台,它只会输出最后几行。
一开始我以为是String
class的限制。为了对此进行测试,我复制了 1,779 行并将它们分配给测试字符串变量。当我输出那个测试字符串变量时,它将所有 1,779 行输出到控制台就好了。
this.respponse
和 response
都显示了整个文档,我错过了什么,但是当我输出其中任何一个时,我只得到最后几行?
public class ClassC {
private String url = "http://www.google.com";
private URL URL;
private HttpURLConnection con;
private String response;
public static void main(String[] args) {
new ClassC();
}
public ClassC() {
try {
URL = new URL(url);
con = (HttpURLConnection) URL.openConnection();
InputStream is = con.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
String line = null;
StringBuffer response = new StringBuffer();
while((line = rd.readLine()) != null) {
response.append(line);
response.append('\r');
System.out.println(response.toString());
}
rd.close();
this.response = response.toString();
System.out.println(this.response);
} catch (IOException e) {
e.printStackTrace();
}
}
}
据我所知,Java 对打印内容没有任何限制。问题可能出在您的控制台上。您是否使用 Eclipse 或其他 IDE 来开发和 运行 应用程序?如果是这样 - 那么默认情况下是的,默认情况下旧行将在 Eclipse 运行 控制台上进行 t运行 分类。这条线也是多余的,
this.response = response.toString();
尝试 \n
而不是 \r
。
'\r' 是回车符 return - 它 return 是行首的插入符号,但不会开始新行,有效地覆盖当前行(或它的一部分)。
例如System.out.println("abcde\rfghi")
结果为 fghie
。
当我调试下面的代码时,在 "Variables" 视图中,response
和 this.response
都显示了来自 http://www.google.com 的全部 1,779 行流式输入。但是,如果我想使用 System.out.println(this.response.toString();
将 this.response
输出到控制台,它只会输出最后几行。
一开始我以为是String
class的限制。为了对此进行测试,我复制了 1,779 行并将它们分配给测试字符串变量。当我输出那个测试字符串变量时,它将所有 1,779 行输出到控制台就好了。
this.respponse
和 response
都显示了整个文档,我错过了什么,但是当我输出其中任何一个时,我只得到最后几行?
public class ClassC {
private String url = "http://www.google.com";
private URL URL;
private HttpURLConnection con;
private String response;
public static void main(String[] args) {
new ClassC();
}
public ClassC() {
try {
URL = new URL(url);
con = (HttpURLConnection) URL.openConnection();
InputStream is = con.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
String line = null;
StringBuffer response = new StringBuffer();
while((line = rd.readLine()) != null) {
response.append(line);
response.append('\r');
System.out.println(response.toString());
}
rd.close();
this.response = response.toString();
System.out.println(this.response);
} catch (IOException e) {
e.printStackTrace();
}
}
}
据我所知,Java 对打印内容没有任何限制。问题可能出在您的控制台上。您是否使用 Eclipse 或其他 IDE 来开发和 运行 应用程序?如果是这样 - 那么默认情况下是的,默认情况下旧行将在 Eclipse 运行 控制台上进行 t运行 分类。这条线也是多余的,
this.response = response.toString();
尝试 \n
而不是 \r
。
'\r' 是回车符 return - 它 return 是行首的插入符号,但不会开始新行,有效地覆盖当前行(或它的一部分)。
例如System.out.println("abcde\rfghi")
结果为 fghie
。