OS 마다 다른 line separator(개행, 줄 구분자)

권지은·2022년 5월 17일
0

파일을 바이트로 바꿈

byte[] bytes;
   bytes = IOUtils.toByteArray(resources[i].getInputStream());

문제 1. 개발 서버에서의 파일 바이트와 로컬 서버에서의 파일 바이트가 달랐다.
이유 : 원래 서버는 리눅스 기준이기 때문에, 파일 바이트 개수가 내 로컬(윈도우)와 달라 바이트 계산이 달라진 것.

리눅스, 맥OS 는 개행 문자가 LF (\n) 이고

윈도우는 개행 문자가 CRLF (\r\n) 이다.

그래서 전체 바이트가 달라졌던 것이였다.
replaceAll( ) 을 사용하여 개행문자를 모두 빼주니 문제를 해결했다.

String winLine = "\r\n";
String linuxLine = "\n";
 
String ResourceString = (new String(bytes, StandardCharsets.UTF_8)).replaceAll( winLine , "");
String replaceResourceString = bpmnResourceString.replaceAll( linuxLine , "");
 
String existingString = (new String(existingResource.getBytes())).replaceAll( winLine , "");
String replaceExistingString  = existingResourceString.replaceAll( linuxLine , "");
profile
어쩌구 개발자

0개의 댓글