@POST
@Path("/getphotos")
@Produces(MediaType.TEXT_HTML)
public String getPhotos() throws IOException{
// DataInputStream rd = new DataInputStream(request.getInputStream());
BufferedReader rd = new BufferedReader(
new InputStreamReader(request.getInputStream(), "UTF-8")
);
String line = null;
String message = new String();
final StringBuffer buffer = new StringBuffer(2048);
while ((line = rd.readLine()) != null) {
// buffer.append(line);
message += line;
}
System.out.println(message);
JsonObject json = new JsonObject(message);
return message;
}
上面的代码是为我的servlet编写的。它的目的是获取一个流,从它生成一个Json文件,然后将Json发送回客户端。但是为了生成Json,我必须使用“rd
”循环读取BufferedReader
对象的rd
。但是,我希望在尽可能少的代码行中将rd
转换为字符串。我该怎么做?
发布于 2017-08-13 18:48:07
来自Java 8:
rd.lines().collect(Collectors.joining());
发布于 2013-02-23 20:30:56
我建议使用commons IO库-然后它是一个简单的1行代码:
String message = org.apache.commons.io.IOUtils.toString(rd);
当然,请注意,使用此机制,可能会通过发送将填满服务器内存的永无止境的数据流来进行拒绝服务攻击。
发布于 2016-12-24 02:02:32
我发现自己今天在做这件事。我不想引入IOUtils,所以我这样做:
String response = new String();
for (String line; (line = br.readLine()) != null; response += line);
https://stackoverflow.com/questions/15040504
复制相似问题