태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

자바 정규 표현식을 쓰다 보면 가끔
"날짜|이름|글|게시물번호"

이런식으로 " | "이 구분자가 되어 있는 경우가 다수 존재하고 있습니다.



솔직히 윈도우만 매번 쓰던 저에게는 split 인자에다가 "/|"를 주고는 했는데요..

오늘도 또 이런 실수를 범하고 말았습니다.

그런 의미에서 포스팅을 좀 해보고자 합니다.

포스팅을 해두면 잊어먹는 일은 없을테니까요..ㅎㅎ

String[] splitedLine = target.split("\\|");

이런식으로..하면 잘 되네요 ^^ 

이클립스에서 이런 저런 소스를 짜다보면 패키지 단위로 많이 사용하게 됩니다.

특히, 메인이 아닌 Util 개념의 소스들은 따로 보관을 해두었다가 그때그때 필요할 때마다 쓰곤 합니다.

역시나.. 이클립스는 완성도가 매우 높은 IDE 였습니다.

Export 하고자 하는 Package 위에 마우스 오른쪽 버튼을 누릅니다.

그 후에 Export를 선택합니다.


사용자 삽입 이미지


아래 그림과 같이 Archive File을 선택합니다.


사용자 삽입 이미지


그 후에 선택하고자 하는 패키지를 선택한 후,

Option에서 Created Only Selected Directories 체크해주면 됩니다.

사용자 삽입 이미지


참 쉽죠잉?!

저런 식으로 패키지 별로 소스를 모아놓으면 나중에 필요할 때 꺼내서 쓰기도 쉬울 것 같네요 ^^;;


파일을 통째로 메모리에 올려서 사용하는 경우가 많은데

자바의 경우에는 지난 포스팅(개행 문자의 비밀)과 같은 현상으로 발생합니다.

흔히 말하는 시스템에 따른 개행 문자의 차이 때문인데요.

자바의 경우에는 윈도우에서 주로 사용하는 \n만을 사용하지 않고,

\r\n을 동시에 사용하고 있습니다.

그렇기 때문에 개행문자와 탭을 동시에 split을 하려고 할 때 아래와 같이 쓰면 안됩니다.

String[] result = str.split("[\r\n\t]");


이런 경우에는 \r, \n, \t를 각자 split 하게 됩니다.

그래서 아래와 같이 변경하여 사용하셔야 합니다.

String[] result = str.split("(\r\n)|\t");

덧,
참고로 제가 이용한 파일의 구조는 아래과 같습니다.

숫자1 \t 숫자2
숫자3 \t 숫자4
숫자5 \t 숫자6

이런 경우에 위에서 이용한 split을 이용하면

각 배열에 숫자1, 숫자2, 숫자3, 숫자4, 숫자5, 숫자6 이런식으로 들어가게 됩니다.


왜 항상 파일을 읽을 때 readLine으로 읽을까....

뭐, 물론 한줄씩 떼다가 읽는 경우에야 편리하다고는 하지만 아무도 BufferedReader에 대한 의심을 품은 사람은 보지 못했습니다.

이번에 자바로 뭔가하고 있는데, 이 때 아무런 의심 없이 BuffereReader를 사용하고 readLine 메소드를 호출하여 파일을 통째로 읽고 있었습니다.

헌데, 파일이 너무 커서..이건 뭐..하나하나 읽는데도 엄청 오래 걸리더군요.

그러다 문든 생각이 났습니다. readLine 메소드 구조를 보면 개행문자를 찾아서 끊어 읽는 것인데, 그렇다면

파일을 통으로 읽는데, 굳이 readLine() 메소드를 계속 호출해가면서 오버헤드를 늘릴 필요가 있을까?

결국..다음과 같은 소스로 해결을 봤습니다.

char[] c = new char[(int)files[i].length()];

br = new BufferedReader (new FileReader(files[i]));                      

br.read(c);

str.append(c);



그러자 프로그램 속도는..측정할 수 없을 만큼 증가하였습니다.

굳이 한줄씩 처리할 필요가 없다면, 위 방법을 강력히 추천합니다.


덧, str은 StringBuilder입니다. 저는 여러 파일을 동시에 읽는 작업을 해야했기 때문에 저런 식으로 하였습니다~

하지만..대용량인 경우...역시 메모리에 다 올라가지 못하고 heap space error 가 발행하네요.

한 파일씩 처리해야겠습니다 ㅠ_ㅠ
간만에 포스팅이군요.

자바 + 논문 파일 조합으로 뭔가 할 일이 있는데, 이 파일 잡놈이 외국물을 먹어서 UTF-8로 되어있더군요.

뭐 검색해보면 소스코드에서 뭘 바꿔라 뭘 바꿔라..뭘 실행해라..이런 얘기들이 있는데..

그냥 번거로울 뿐이고..

대부분의 자바 개발자분들 께서는 이클립스로 개발을 하실거라는 것으로 가정 하고 그냥 간단하게 프로젝트 속성에 가셔서

Resource -> Text file encoding -> Other -> UTF-8로 설정해주시면 됩니다.

이 때 주의하실 부분이 있는데,,행여나 프로젝트를 한참 만드시고 이 설정을 해주시면,

소스코드 자체가 깨질 위험이 있으니, 반드시 프로젝트를 생성하시고나서 바로 설정해주셔야합니다.

덧, 단체로하는 프로젝트에서는 위 방법대로 하시면 다른 분들에게 방해가 될 수 있겠죠? ^^;; 이 때는 소스코드 내에서 해결을 보시길 권장드립니다~