기본적으로 텍스트 파일을 불러오는 방법은 매우 간단합니다.
파일 불러오기 -> 파일 읽기 -> 저장 및 출력
저는 이렇게 3단계로 분류하는데 하나씩 살펴볼게요.
File note = new File("C:/Users/user/Desktop/js/note.txt");
첫 번째 파일 불러오기입니다.
해당 메모장의 경로를 입력해주시면 불러오기가 가능합니다.
이 코드를 복사하거나 입력하시면 File 부분이 빨간색으로 나올 텐데 걱정 마시고 마우스를 올린 뒤 import 해주시면 됩니다.
import java.io.File;
그러면 맨 위 패키지 아래 import 된 걸 보실 수 있어요.
BufferedReader br = new BufferedReader(new FileReader(note));
두 번째 파일 읽기입니다.
이 코드도 위 불러오기와 마찬가지로 빨간 줄이 뜨면 import 해주시면 됩니다.
import를 했는데 계속 빨간색이 남아 있을 겁니다. 마우스를 올려보면 try/catch를 하라고 나와있습니다.
try/catch는 예외처리입니다. 예외처리에 대해서는 좀 더 나중에 다루도록 할게요.
지금은 오류가 나야 하는 부분을 예외 처리해서 사용할 수 있도록 만든다고 생각하시면 됩니다.
불러오기에서 선언한 note를 fileReader에 넣음으로써 해당 경로의 메모장을 읽어 올 수 있게 됐습니다.
String str = br.readLine();
System.out.println(str);
세 번째 저장 및 출력입니다.
br.readLine 은 메모장을 문자열로 읽어 온다는 뜻입니다.
문자열로 읽어온 값을 str에 대입하고 콘솔로 출력하는 코드입니다.
이렇게 3가지로 분류해봤고 이제 합쳐진 코드를 볼게요.
File note = new File("C:/Users/user/Desktop/js/note.txt");
try{
BufferedReader br = new BufferedReader(new FileReader(note));
String str = br.readLine();
System.out.println(str);
br.close();
} catch (NullPointerException e){ // null이 있을 경우
e.getStackTrace();
} catch (FileNotFoundException e){ // 파일을 찾을 수 없는 경우
e.getStackTrace();
} catch (IOException e){ // 파일 읽기 중 에러가 발생한 경우
e.getStackTrace();
}
try/catch는 이렇게 예외 하는 데 사용한다고 생각하시면 됩니다.
note메모장에 A , B , C 가 있을 경우 위 코드는 A만 가져옵니다.
당연히 한 번만 읽었으니 당연한 결과입니다.
File note = new File("C:/Users/user/Desktop/js/note.txt");
try{
BufferedReader br = new BufferedReader(new FileReader(note));
String str = br.readLine(); // 변수 선언과 첫번째 문자열 대입
while(str != null){ // 읽어오는 문자열이 null이 나올때까지 루프
System.out.println(str); // 출력
str = br.readLine(); // 메모장 다음 문자열 읽기
}
br.close();
} catch (NullPointerException e){ // null이 있을 경우
e.getStackTrace();
} catch (FileNotFoundException e){ // 파일을 찾을 수 없는 경우
e.getStackTrace();
} catch (IOException e){ // 파일 읽기 중 에러가 발생한 경우
e.getStackTrace();
}
while문을 사용하면 손쉽게 모든 값을 읽어 올 수 있습니다.
단 여기서도 문제가 있어요. 메모장을 읽기만 한다면 여기서 끝이겠지만 메모장의 값을 사용하기 위해서는
이런 방식으로는 불가능합니다.
srt을 계속 초기화하기 때문에 이전 값을 은 지워지기 때문이에요.
ArrayList<String> N_list = new ArrayList<String>(); // 리스트 선언
File note = new File("C:/Users/user/Desktop/js/note.txt");
try{
BufferedReader br = new BufferedReader(new FileReader(note));
String str = br.readLine();
while(str != null){
N_list.add(str); ArrayList에 저장
str = br.readLine();
}
br.close();
} catch (NullPointerException e){ // null이 있을 경우
e.getStackTrace();
} catch (FileNotFoundException e){ // 파일을 찾을 수 없는 경우
e.getStackTrace();
} catch (IOException e){ // 파일 읽기 중 에러가 발생한 경우
e.getStackTrace();
}
for(i = 0; i < N_list.size(); i++){ // 저장된 Array의 크기만큼 루프
System.out.println(N_list.get(i)); // 순서대로 출력
}
저는 ArrayList를 사용했습니다.
이렇게 리스트에 이전 값도 모두 저장돼있는 걸 보실 수 있습니다.
생각보다 쉬운 작업이죠? 저도 처음에는 이게 뭔가 싶었는 데 사용하다 보니 금방 활용을 잘하게 되더라고요.
파일만 불러와서 저장했을 뿐인데 벌써 많은걸 할 수 있게 됐습니다. 문제들을 저장해서 랜덤 하게 풀 수 있는 알고리즘을 만들 수도 있고요.
예외처리도 하다 보면 어렵지 않다는 걸 느끼실 거예요.
'JAVA > JAVA TIP' 카테고리의 다른 글
JAVA console Color (콘솔 색상 추가하기) (0) | 2021.11.26 |
---|---|
Java 입문 login처리 예제 (1) (0) | 2021.11.08 |
JAVA txt(file) 불러오기 예제 (split) (0) | 2021.11.08 |