반응형

2차원배열 형태로 텍스트파일 읽기

표 형식의 데이터를 텍스트 파일로 관리할 때가 있습니다.
대표적으로 CSV형식의 파일이 있습니다.

금융권 프로젝트의 경우 DRM문서보완에 의해 파일 사용에 제약이 따릅니다.
엑셀 등의 데이터를 Text-file화하여 프로그램에서 사용할 때 주로 이용하고 있습니다.

파일의 내용을 구분자( Delimeter )로 분할하여 2중배열로 가져오는 소스입니다.

■ SOURCE

    public static ArrayList<ArrayList<String>> readArr2( String strFilePath ) {
        
        ArrayList<ArrayList<String>> arr2Result = new ArrayList<ArrayList<String>>();
        
        try {
            @SuppressWarnings("resource")
            BufferedReader br = new BufferedReader( new FileReader( new File( strFilePath ) ) );
            
            String strLine;
            
            while( ( strLine = br.readLine() ) != null ) {
                
                if( strLine.trim().isEmpty() ) continue;
                
                String[] saCol = strLine.split( "\\^" );  // 구분자 : ^
                
                ArrayList<String> arrLine = new ArrayList<String>();
                
                for( int i = 0; i < saCol.length; i++ ) {
                    arrLine.add( saCol[i].trim() );
                }
                
                arr2Result.add( arrLine );
            }
            
        }catch( Exception ex ) {
            ex.printStackTrace();
            System.exit(0);
        }
        
        // 결과 반환
        return arr2Result;
    }

 

별도 함수로 구현하여, 여러 곳에서 호출하여 사용할 수 있도록 하였습니다.

입력파라미터( strFilePath )로 파일의 경로를 받아 처리합니다.

파일의 데이터 분할하는 구분자도 입력파라미터로 받는다면 좀 더 범용적으로 사용할 수 있을 것입니다.


※ 참고
 
    - 링크 ☞ String.split()를 이용한 데이터 분할하기

반응형