programing

Buffered Reader를 문자열로 쉽게 변환하는 방법

linuxpc 2023. 3. 2. 22:02
반응형

Buffered Reader를 문자열로 쉽게 변환하는 방법

@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;
}

위의 코드는 내 서블릿용입니다.그 목적은 스트림을 가져와 Json 파일을 만든 후 클라이언트에 Json을 돌려보내는 것입니다.하지만 Json을 만들기 위해서, 나는 읽어야 한다.BufferedReader물건rd"while" 루프를 사용합니다.단, 변환하고 싶다rd가능한 한 적은 줄의 코드를 입력합니다.그걸 어떻게 하는 거죠?

Java 8부터:

rd.lines().collect(Collectors.joining());

공통 IO 라이브러리를 사용하는 것이 좋습니다.그러면 간단한 라이너 1개입니다.

String message = org.apache.commons.io.IOUtils.toString(rd);

물론 이 메커니즘을 사용하면 서버 메모리를 가득 채우는 끝없는 데이터 스트림을 전송함으로써 서비스 거부 공격이 발생할 수 있습니다.

나는 오늘 이것을 하고 있는 나를 발견했다.차용증을 가져오고 싶지 않아서 다음과 같이 했습니다.

String response = new String();
for (String line; (line = br.readLine()) != null; response += line);

변수를 다음과 같이 String으로 사용합니다.

BufferedReader rd = new BufferedReader(
                new InputStreamReader(response.getEntity().getContent()));
String line = "";
while((line = rd.readLine()) != null){

} 

언급URL : https://stackoverflow.com/questions/15040504/how-to-easily-convert-a-bufferedreader-to-a-string

반응형