파일 입출력에 관게되는 모든 프로그램은 try ~ catch
문을 사용해야 한다.
try ~ catch
안에 있는 프로그램을 실행하다가 오류가 발생하면 catch문장을 실행한다. 만약에 오류가 없다면 catch 문장은 실행하지 않는다.
주어진 파일 경로에 있는 파일을 읽어오는 클래스이다.
FileReader fir = new FileReader("파일경로");
파일을 가리키는 클래스이다.
FileInputStream fis = new FileInputStream("파일경로");
객체가 가리키는 파일의 charset을 다른 형식으로 변환하는 클래스이다.
InputStreamReader in = new InputStreamReader(변환할 객체, 변환할 형식);
변환할 형식에는 다양한게 있으며 대표적으로 UTF-8, MS949가 있다.
txt파일을 가리키는 파일 객체를 생성하는 클래스이다.
FileWriter fiw = new FileWriter("txt파일경로");
fiw.write(데이터변수, 가져올 데이터 순서(n), 변수길이);
데이터변수의 n번째 데이터부터 입력된 데이터의 길이만큼 fiw이 가리키는 txt 파일에 출력하라는 뜻이다.
fout.write("\r\n", 0, 2);
한줄띄기라는 뜻이고 \r\n
은 줄바꾸고 커서 맨 앞으로 이동하라는 뜻이다.
출력파일 객체변수를 생성하는 클래스이다.
FileOutputStream fos new FileOutputStream("출력할 파일경로");
출력파일 경로는 ~~.out
으로 하게 되는데 이때 확장자가 out
이라서 메모장으로 불러오면 깨져서 나온다.
입력파일 객체변수를 생성하는 클래스이다.
FileInputSream fin = new FileInputStream("입력할 파일경로");
👉 사용방법
int c;
while((c=fin.read()) != -1) {
fin이 가리키는 "test.out"파일에 있는 내용을 읽어서 c에 저장한다.
객체이름.close();
버퍼클래스를 이용해 데이터를 읽어오는 클래스이다.
버퍼는 실행속도가 빨라 결과 도출이 버퍼를 사용하지 않을 때보다 훨씬 빠르다.
BufferedReader bf = new BufferedReader(파일경로);
파일을 한 줄씩 읽는 메소드이다.
읽어올파일경로변수.readLine();
👉 사용예시
String str = "c:\\Temp\\writed.txt";
do {
count++;
tmpStr = br.readLine();
if (tmpStr != null) {
csvStr += tmpStr + "\t";
}
} while (tmpStr != null);
문자열 나눌 때 마다 count
에 값을 1씩 추가했고 tmpStr
에 str
의 한 줄씩 입력되고 null이 아닐시에 "\t"을 해서 문자열을 나누었다.
줄바꿈이라는 뜻이다.
문자열.newLine();
토큰의 구분자로 문자열을 나누는 클래스이다.
StringTokenizer parse = new StringTokenizer(문자열, 구분자);
👉 사용예시
StringTokenizer parse = new StringTokenizer(csvStr, "\t");
"\t"한 곳을 기준으로 문자열을 나눈다.
StringTokenizer
로 나누어진 문자열의 개수를 구하는 메소드이다.
나누어진 문자열.countTokens();
👉 사용예시
int length = csvStr.countTokens()/count;
문자열의 개수를 위에서 초기화된 변수 count
로 나눠주면 총 몇 줄이었는지 알 수 있다.
다음 토큰(문자열)을 가리키는 메소드이다.
나누어진 문자열.nextToken();
👉 사용예시
for (int i = 0; i <= length; i++) {
name[i] = parse.nextToken();
math[i] = Double.valueOf(parse.nextToken()).doubleValue();
}
name[i]
에 데이터를 넣고 다음 토큰을 가리킨다.
parse.nextToken()
은 "100"데이터를 실수형 객체타입의 데이터로 변환하고 .doubleValue()에 의해 기본형 실수 형식으로 변환해 math[0]에 넘겨주고 다음토큰 가리킨다.