Java

[Java] 입출력 클래스를 통한 주소 데이터 출력 / BufferedReader를 이용한 주소 출력 / 주소를 입력받으면 연관된 주소를 출력해주는 프로그램

bkuk 2022. 10. 13. 22:35

아래와 같이 서울과 경기도 일부의 18,308개 데이터가 있습니다.

 

입출력 클래스를 이용해서 원하는 데이터를 출력한다면 어떨까요?


 

우선, 1번부터 18,308번까지의 데이터BufferedReader를 이용해서 consol에 출력해보겠습니다.

BufferedReader br =null;

try {
    br = new BufferedReader( new FileReader("./zipcode_seoul_utf8_type2.csv"));

    String str = null;
    while( (str = br.readLine()) != null ) {
        System.out.println( str );

    }
} catch (FileNotFoundException e) {
    System.out.println( e.getMessage());
} catch (IOException e) {
    System.out.println( e.getMessage());
} finally {
    if( br != null ) try { br.close(); } catch(IOException e) {}
}

 

주소지가 '서울'인 데이터만 보고싶다면?

 

우선, 읽어 들인 데이터를 구분자를 제외하고 배열로 담습니다.

이 중 "서울"이라는 데이터를 가지고 있으면 그 데이터를 출력합니다.

BufferedReader br =null;

try {
    br = new BufferedReader( new FileReader("./zipcode_seoul_utf8_type2.csv"));

    String str = null;

    while( (str = br.readLine()) != null ) {
        String[] addresses = str.split( "," );	// 구분자 없이 배열로 저장

        if( addresses[1].equals("서울") ) {	// 배열로 저장한 것 중에서 "서울"이라면 
            System.out.println( str );		// 읽고 난 후 해당 데이터를 console에 출력한다.
        }

    }
} catch (FileNotFoundException e) {
    System.out.println( e.getMessage());
} catch (IOException e) {
    System.out.println( e.getMessage());
} finally {
    if( br != null ) try { br.close(); } catch(IOException e) {}
}

 

이를 메모장에 저장해보겠습니다

그렇게 하기 위해서는 출력 스트림도 생성해줘야 합니다.

따라서, "SeoulDate.txt" 라는 텍스트 파일을 저장할 수 있는 BufferWriter 스트림을 생성했습니다. 

BufferedReader br =null;
BufferedWriter bw = null;

try {
    br = new BufferedReader( new FileReader("./zipcode_seoul_utf8_type2.csv"));
    bw = new BufferedWriter( new FileWriter("./SeoulData.txt"));

    String str = null;
    while( (str = br.readLine()) != null ) {

        String[] addresses = str.split( "," );

        if( addresses[1].equals("서울") ) { 
            bw.write( str + "\n");
        }
    }

} catch (FileNotFoundException e) {
    System.out.println( e.getMessage());
} catch (IOException e) {
    System.out.println( e.getMessage());
} finally {
    if( br != null ) try { br.close(); } catch(IOException e) {}
    if( bw != null ) try { bw.close(); } catch(IOException e) {}
}


 

주소 키워드를 입력받으면 출력해주는 프로그램

Scanner scan = new Scanner(System.in);

String juso = scan.nextLine();

juso = juso.replace(" ", "");

BufferedReader br = null;

try {
    br = new BufferedReader( new FileReader("./zipcode_seoul_utf8_type2.csv"));

    System.out.println( juso + "를 입력받았습니다." + "\n");

    String str = null;

    int Numbering = 0;

    while( (str = br.readLine()) != null ) {
        String[] addresses = str.split( "," );

        if( addresses[3].startsWith(juso)) {
            Numbering++;
            System.out.println( "["+Numbering+"]"+ "\t" + str + "\n");
        }
    }
} catch (FileNotFoundException e) {
    System.out.println( e.getMessage());
} catch (IOException e) {
    System.out.println( e.getMessage());
} finally {
    if( br != null ) try { br.close(); } catch(IOException e) {}
}