java 시험 대비로 만들어보는 초급 문제 두 가지를 이야기해 보겠습니다. 사실 자바 초급단계에서 중요한 것은, 어려운 알고리즘의 문제보다는 기본적인 자바 프로그래밍 언어를 이해하고 있는가가 아닌가 싶은데요. 그래서 첫 시험인 만큼은 난이도 조절이 있기 때문에 무난하게 보지 않을까라는 생각을 하고는 합니다.
물론 글을 쓰는 저도 공부가 부족하기 때문에 이렇게 글을 올리며 흐름을 파악하려는 의도가 있겠죠. 서론은 이만하고, 자바 초급 중 초급인 파일의 입출력에 대해 알아보도록 하겠습니다.
이렇게 글을 쓰게 돼버리면, 문자열로 받고 있는 안녕하세요라는 것은 상수로서 고정값을 유지하게 됩니다. 아래의 코드는 주석처리를 해주세요.
String str = "안녕하세요?"
System.out.println(str);
하지만 우리는 상수의 표현이 아니라 자바의 프로그램이나 기타 외의 프로그램이 종료되더라도 메모장에 저장하고 싶다면 어떤 입출력 키워드를 사용해야 할까요? 우리가 입력한 값을 한번 받아보는 작업을 해보겠습니다.
(1) 파일의 입출력 : 스캐너로 입력할 값 받기
Scaaner sc = new Scanner(System.in0;
System.out.println("아무거나 입력하세요: ");
Striing str = sc.nextLine();
우리가 입력한 값을 그대로 프로그램이 종료되어도 메모장에 저장하고 싶다면 아래와 같이 파일의 객체를 만들어줄 겁니다.
(2) 파일의 확장자명 확인 : 클래스명과 확장자명 기재
File ifle = new File("test.txt");
그리고 당연한 것은 라이브러리를 추가해 주고, 실제 파일을 생성해 줄 텐데요. (실제 메모장을 생성해 줄 겁니다. 생성의 키워드는 create을 사용해 봅니다. 하지만, 파일을 생성하며 예외를 잡아줄 것이기 때문에 try catch문을 미리 만들어줍니다.
(3) try catch문 이때 catch문은 exception : 예외를 잡기
try {
}catch(exception e) {
System.out.prinln(e);
이제 문자로 저장할 내용을 입력해 줄 텐데요. 파일을 생성으로 끝나는 것이 아니라, 입력한 내용을 덮어씌우는 것이 아닌 그대로 저장을 해야 하기 때문에 write를 적어줍니다. 아래와 같이 말이죠.
(4) createNewFile과 FileWriter 객체의 생성과 "\n"
file.createNewFile();
FileWriter fw = new FileWriter(file,true);
fw.write(str + "\n");
fw.close
그리고 이제 읽을 수 있는 코드를 만들어줘야 하는데요. catch로 닫기 전에 try문을 한번 더 생성합니다. 이번엔 읽어야 하니 FileReader로서 객체를, 그리고 한 줄씩 읽을 수 있는 BufferedReader의 객체를, 마지막으로는 데이터를 가져오도록 합니다.
(5) FileReader와 BufferedReader
try {
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String data = br.readLine();
마지막으로 데이터를 문자열로 받는 것은 버퍼에서 읽어 들인 것을 받는 것임을 참고해 주세요. 그리고 마지막으로 반복합니다. " 반복해 줘, 만약에 데이터 문자열에 null값이 없다면, 데이터를 출력해 주고, 그다음 줄을 가지고 와줘"라고요.
(5) While문과 null
while(data != null) {
System.out.println(data);
data = br. readLine();
}
System.out.println(fr.read());
fr.close();
}catch(Exception e) {
System.out.println(e);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
그리고 두 번의 try문을 닫아주면 됩니다.
코드정리
package TAKE;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class FileMain {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("아무거나 입력:");
String str = sc.nextLine();
File file = new File("test.txt");
try {
file.createNewFile();
FileWriter fw = new FileWriter(file,true);
fw.write(str + "\n");
fw.close();
try {
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String data = br.readLine();
while(data != null) {
System.out.println(data);
data = br.readLine();
}
System.out.println(fr.read());
fr.close();
}catch(Exception e) {
System.out.println(e);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(str);
}
}
'JAVA > JAVA Academy Project' 카테고리의 다른 글
JAVA 시험 대비로 만들어보는 초급 문제 6가지 (0) | 2023.11.06 |
---|
댓글