반응형

안녕하세요. 신기한 연구소입니다.

요즘 프로젝트를 하는 중인데요.

기존 SQL을 참고해서 새로운 SQL문을 사용하는 방식인데 문제는 테이블명과 컬럼명이 변경되었다는 겁니다.

기존 컬럼명을 새로 바뀐 컬럼으로 바꾸는 작업이 거의 노동 수준이라 자동화를 위해 고민해봤습니다.

매핑 정보를 CSV로 변경해서 자동으로 비교 후 변환하는 작업을 하려다 보니

파일 정보를 읽어야 하는 상황이 생겼습니다.

그래서 간단하게 사용할 수 있게 코딩해봤습니다.

 

 

자바에서 제공하는 I/O Streams(스트림)은

Byte Streams, Character Streams, Buffered Streams, Scanning, Data Streams, Object Streams으로 구성되는데요.

Character Streams를 사용해서 파일을 읽는 방법을 알아보겠습니다.

먼저 CSV 파일을 만들었습니다.

이 파일을 읽어서 txt파일로 변환도 하고 출력도 하도록 코딩해보겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package a.b;
 
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
 
 
public class TestExcel {
 
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        
        //스트림 IO 선언
        FileReader inputStream = null;
        FileWriter outputStream = null;
        
        //스트림으로 읽을  파일 변수
        int c;
 
        try {
            //읽을 파일
            inputStream = new FileReader("C:/TestData/csvData.csv");
            //읽은 내용으로 새로 만들 파일
            outputStream = new FileWriter("C:/TestData/csvData.txt");
 
            
            //read()메서드를 사용해서 한 글자씩 읽음.
            while ((c = inputStream.read()) != -1) {
                //int로 읽은 스트림을 문자로 확인하기 위해 char ch로 형변환.
                char ch = (char)c;                
                System.out.println(ch);
                
                //새로운 파일을 만듬
                outputStream.write(c);
            }
            
        } finally {
            //사용 후에는 무조건 닫아줘야 함.
            if (inputStream != null) {
                inputStream.close();
            }
            if (outputStream != null) {
                outputStream.close();
            }
        }
    }
 
}
cs

 

실행을 하면 csvData.txt가 생성됩니다.

그리고 char로 출력이 됩니다.

이렇게 한 글자씩 출력이 됩니다. (윗부분만 캡처했습니다.)

하지만 불편한 점 이 있네요.

CSV의 처음 파일을 보면 한 줄씩 row단위로 데이터를 만들고 있는데 

출력은 한 글자씩 나오고 있습니다.

한 줄로 데이터를 받으면 더 편하겠네요.

그런 경우는 BufferedReader()를 사용해서 rereadLine() 메서드를 사용하면

문자열 라인으로 출력이 가능합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package a.b;
 
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
 
 
public class TestExcels {
 
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        
        //스트림 IO 선언
        BufferedReader inputStreamLine = null;
        String l = "";
        
        try {
            //읽을 파일
            inputStreamLine = new BufferedReader(new FileReader("C:/TestData/csvData.csv"));
 
            while ((l = inputStreamLine.readLine()) != null) {
                //문자열 단위, 한 줄씩 읽음.
                System.out.println(l);
            }
            
        } finally {
            //사용 후에는 무조건 닫아줘야 함.
            if (inputStreamLine != null) {
                inputStreamLine.close();
            }
        }
    }
}
 
cs

 

위 예제는 문자열 단위로 뽑아 옵니다.

결과는 다음과 같습니다.

코드가 무겁지 않아 보이네요.

문자 단위나 문자열로 추출하는 방법에 대해 알아봤습니다.

이 코드를 가지고 잘 사용해봐야겠네요.

 

오라클 자바 튜토리얼을 참고해서 만들어봤는데요. 

자바 공부하기에는 가장 좋은 교재로 생각됩니다.

아래 하트(공감) 버튼을 눌러서 더 다양한 글을 쓸 수 있게 응원 부탁드립니다. 감사합니다.

반응형
반응형

안녕하세요. 신기한 연구소입니다.

최근 프로젝트를 하던 중 리눅스 서버에서 작업을 했는데요.

오랜만에 리눅스를 접하다 보니 좀 어리버리한 상황이 종종 발생하더군요.

이왕 하는 거 집에서 세팅해서 해보자는 마음에 방법을 찾아봤습니다.

예전에는 데스크톱 컴퓨터에 직접 리눅스를 설치하곤 했지만...

지금은 노트북 하나만 사용 중이라 리눅스로 재 설치하는 건 번거롭기도 하고..ㅎㅎ

 

그래서 가상 서버를 사용하는 방법을 찾다 보니

오라클 버추얼박스(Oracle VirtualBox)가 있더군요.

개인 사용은 무료라고 합니다. ㅎㅎ

설치 방법이 어렵지는 않지만 그래도 같이 따라 해 보기로 해요.

 

포털에 가서 버추얼박스로 검색을 합니다.

그러면 오라클 VM 버추얼이 나옵니다.

https://www.virtualbox.org

 

Oracle VM VirtualBox

Welcome to VirtualBox.org! News Flash New January 19th, 2021VirtualBox 6.1.18 released! Oracle today released a 6.1 maintenance release which improves stability and fixes regressions. See the Changelog for details. Important November 16th, 2020We're hiring

www.virtualbox.org

 

왼쪽 Downloads를 클릭해도 되고 화면의 다운로드를 클릭해도 됩니다.

윈도우즈(Windows 10)에 설치할 거라서 Windows hosts를 클릭합니다.

이제 다운로드가 시작됩니다.

그리고 설치가 시작됩니다.

환영 페이지가 나옵니다.

Oracle VM VirtualBox 6.1.18 버전입니다.

Next를 클릭합니다.

설치 위치는 그대로 사용하겠습니다.

Next를 클릭합니다.

옵션인데요.

시작 메뉴에 넣을지, 바탕화면에 바로가기를 넣을지, 빠른 메뉴에 넣을지, 파일 연결을 등록할지 묻습니다.

그냥 전부 체크하고  Next를 클릭합니다.

경고문이 나옵니다.

괜히 겁나네요. ㅎㅎ

설치하는 중에 네트워크가 잠시 끊긴다는 의미입니다.

문제가 안된다면 바로 Yes를 클릭합니다.

자.. 이제 설치를 시작합니다.

Install 버튼을 클릭합니다.

이렇게 진행 바가 나옵니다.

혹시 진행이 안되고 멈춰 있다면

화면 하단 작업표시줄에 권한 관련된 알람이 깜박이지 않는지 확인하세요.

USB를 가상 서버에서 인식하게 하려면 설치해야 합니다.

당연히 설치해야겠지요?

이제 설치가 완료되었습니다.

Finish를 클릭하면 완료되면서 오라클 버추얼박스(Oracle VM VirtualBox)가 실행됩니다.

다행스럽게 한글로 되어 있네요. ㅎㅎ

환경설정을 선택해봅니다.

기본 머신 폴더를 지정해야 하는데요.

C드라이브의 Virtual_Svr/Box라고 만들었습니다. 

각자 취향이 맞게 만드시면 되겠습니다.

지금까지 오라클 버추얼박스 다운로드부터 설치까지 해봤는데요.

이제 리눅스를 설치해야겠네요.

우선 리눅스 설치는 다음 포스팅에 만나보겠습니다.

아래 하트(공감) 버튼을 눌러서 더 다양한 글을 쓸 수 있게 응원 부탁드립니다. 감사합니다.

반응형