Java FileInput과 Output

강효림·2023년 5월 17일
0

JAVA

목록 보기
15/19

파일 입출력에 관게되는 모든 프로그램은 try ~ catch문을 사용해야 한다.
try ~ catch 안에 있는 프로그램을 실행하다가 오류가 발생하면 catch문장을 실행한다. 만약에 오류가 없다면 catch 문장은 실행하지 않는다.

FileReader

주어진 파일 경로에 있는 파일을 읽어오는 클래스이다.

FileReader fir = new FileReader("파일경로");

FileInputStream

파일을 가리키는 클래스이다.

FileInputStream fis = new FileInputStream("파일경로");

InputStreamReader

객체가 가리키는 파일의 charset을 다른 형식으로 변환하는 클래스이다.

InputStreamReader in = new InputStreamReader(변환할 객체, 변환할 형식);

변환할 형식에는 다양한게 있으며 대표적으로 UTF-8, MS949가 있다.

FileWriter

txt파일을 가리키는 파일 객체를 생성하는 클래스이다.

FileWriter fiw = new FileWriter("txt파일경로");

fiw.write(데이터변수, 가져올 데이터 순서(n), 변수길이);

데이터변수의 n번째 데이터부터 입력된 데이터의 길이만큼 fiw이 가리키는 txt 파일에 출력하라는 뜻이다.

fout.write("\r\n", 0, 2);

한줄띄기라는 뜻이고 \r\n은 줄바꾸고 커서 맨 앞으로 이동하라는 뜻이다.

FileOutputStream

출력파일 객체변수를 생성하는 클래스이다.

FileOutputStream fos new FileOutputStream("출력할 파일경로");

출력파일 경로는 ~~.out으로 하게 되는데 이때 확장자가 out이라서 메모장으로 불러오면 깨져서 나온다.

FileInputStream

입력파일 객체변수를 생성하는 클래스이다.

FileInputSream fin = new FileInputStream("입력할 파일경로");

👉 사용방법

int c;
while((c=fin.read()) != -1) { 

fin이 가리키는 "test.out"파일에 있는 내용을 읽어서 c에 저장한다.

객체 생성의 역순으로 객체 사용연결을 끊어야한다.

객체이름.close();

BufferedReader

버퍼클래스를 이용해 데이터를 읽어오는 클래스이다.
버퍼는 실행속도가 빨라 결과 도출이 버퍼를 사용하지 않을 때보다 훨씬 빠르다.

BufferedReader bf = new BufferedReader(파일경로);

readLine()

파일을 한 줄씩 읽는 메소드이다.

읽어올파일경로변수.readLine();

👉 사용예시

String str = "c:\\Temp\\writed.txt";
do {
	count++;
	tmpStr = br.readLine(); 
	if (tmpStr != null) {
		csvStr += tmpStr + "\t";
	}
} while (tmpStr != null);

문자열 나눌 때 마다 count에 값을 1씩 추가했고 tmpStrstr의 한 줄씩 입력되고 null이 아닐시에 "\t"을 해서 문자열을 나누었다.

newLine()

줄바꿈이라는 뜻이다.

문자열.newLine();

StringTokenizer

토큰의 구분자로 문자열을 나누는 클래스이다.

StringTokenizer parse = new StringTokenizer(문자열, 구분자);

👉 사용예시

StringTokenizer parse = new StringTokenizer(csvStr, "\t");

"\t"한 곳을 기준으로 문자열을 나눈다.

countTokens()

StringTokenizer로 나누어진 문자열의 개수를 구하는 메소드이다.

나누어진 문자열.countTokens();

👉 사용예시

int length = csvStr.countTokens()/count;

문자열의 개수를 위에서 초기화된 변수 count로 나눠주면 총 몇 줄이었는지 알 수 있다.

nextToken()

다음 토큰(문자열)을 가리키는 메소드이다.

나누어진 문자열.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]에 넘겨주고 다음토큰 가리킨다.

0개의 댓글