반응형

지난번에 이어서 오늘은 파일을 생성해보도록 하겠습니다.

파일 생성은 이미 생성을 시도했던 jwt, 원본 데이터+해시입니다.

 

파일로 저장하는 함수는 다음과 같이 만들었습니다.

   public boolean fileWrite(String dataString, String filePath) { 
     BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath), "UTF-8")); 
     
     File file = new File(filePath); 
     List dataList = new ArrayList(); 
     if(file.isFile()) { 
     BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF-8")); 
     while(br.ready()) { 
     if(br.readLine().isEmpty()) { 
     continue; 
     } 
     
     String line = br.readLine(); 
     dataList.add(line); 
     }     
     br.close(); 
     } 
     
     for(String data : dataList) { 
     bw.write(data); 
     bw.newLine(); 
     } 
     bw.write(dataString); 
     
     bw.close(); 
     return true; 
    }

위 내용을 참고하셔서 파일을 저장하시면 됩니다.

그럼 아래와 같이 데이터를 입력할 때 2개의 파일이 생성이 됩니다.

 

위의 경우는 4번 테스트를 한 결과입니다.

 

위와 같이 파일을 생성하기 위해서는 parserMapFromJson 함수에서 생성 한 키를 참고해야 합니다.

String  fileName = (String)parserJsonFromMap(data).get("jsonkey");

String filePath = defaultPath() + "/" + fileName + ".txt";
if(fileWrite(data,  filePath)) {

System.out.println("JWT FILE Write Success");

} else {

System.out.println("JWT FILE Write Faile");

}

parserJsonFromMap 함수를 이용해 jwt에 있는 jsonkey의 값을 조회하여 파일 명으로 사용했습니다.

 

하지만 보시는 것처럼 정렬되지 않아 구분이 쉽지 않습니다.

그래서 파일 생성 시 경로를 따로 구분하도록 했습니다. 더 좋은 방법은 파일명 규칙을 정의하는 것이지만

파일명 정의를 하면 현재는 하드코딩을 해야 할 수 있기 때문에 생략하도록 하겠습니다.

 

위 같은 경우는 코드가 추가되지 않고 resource아래에 data, jwtfiles라는 디렉터리를 생성하고 fileWrite의 

2번 파라미터에 경로를 지정했습니다.

 

그리고 파일 쓰기를 하면서 문제가 있었던 것 중 하나는 바로 한글 인코딩 문제입니다.

인코딩은 한글을 쓸 때 항상 신경 쓰이는 부분이죠

 

위 코드 생성 후 인코딩 문제가 발생하여 기본 인코딩을 설정하는 함수를 추가하기로 했습니다.

인코딩 설정 코드는 다음과 같습니다.

public static String getDefaultFileEncoding() { 
String lang = getCookie("lang"); 

String encoding = ""; 

if ( lang.startsWith("ko") ) { 
encoding = "MS949"; 
} else if ( lang.startsWith("ja") ) { 
encoding = "MS932"; 
} else { 
encoding = "UTF-8"; 
} 
return encoding; 
}

UTF8 만 쓴다면 문제가 없겠지만 이미 생성된 파일이 어떤 인코딩인지는 알 수 없겠네요

 

다음에는 파일의 인코딩을 확인할 수 있는 방법도 생각해 볼 필요는 있을 것 같습니다.

 

위 내용 참고하시기 바랍니다.

 

정리된 소스코드는 정리 후 기회가 되면 올리도록 하겠습니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기