Java day20

13660 ワード


ファイルI/O


リーダ

	● FileReader > BufferedReader > 파일에서 출력

	● FileReader	: 경로에 있는 파일 준비시키기(읽기 위해)
					  파일이 없으면 예외 발생(FNFE) → try / catch문으로

	● BufferedReader	: 버퍼를 이용해서 파일 읽기

	● .readLine()	: \n을 기준으로 한 줄씩 읽어오기
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.nio.charset.Charset;

public class FileReaderExam {
	public static void main(String[] args) throws Exception {
		// 파일을 읽기 위한 객체를 생성
		FileReader fr = new FileReader("D:\\java_1900_yohan\\memo\\memo\\file_in.txt", Charset.forName("UTF-8"));
	
//		int data = 0;
//		while(data != -1) {	// 파일 문장의 마지막에 가면 -1을 반환한다. 
//							// 파일의 마지막에 가면 null이 반환, end of file이라는 값으로 -1 반환
//			data = fr.read();
//			// while(data != -1) 이것때문에 마지막에 ?가 뜨는데 if(data != -1)로 방어코드를 작성해서
//			// 마지막 것까지 출력
//			if(data != -1) {
//			System.out.println((char)data);
//		}
//		}
//		fr.close();
//		System.out.println("파일 읽기 종료");
		
		// 파일을 라인 단위로 읽기 방법
		BufferedReader br = new BufferedReader(fr);
//		FileReader fr = new FileReader("D:\\java_1900_yohan\\memo\\memo\\file_in.txt", Charset.forName("UTF-8"));
		
		// 한줄을 읽어온다.
//		String line = br.readLine();
		
		// 여러줄 읽어오기
		String line = "";
		while(true) {
			line = br.readLine();
			if(line == null) break;
			System.out.println(line);
		}
		
		br.close();
		fr.close();
     }
   }
		import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class ReaderTest {
	public static void main(String[] args) {
		ArrayList<String> datas =  new ArrayList<String>();
		try {
//		파일을 읽기 위해서는 먼저 FileReader를 만들어준다.
			FileReader fr = new FileReader("C:\\JAVA_WEB_LKM\\java\\workspace\\day17\\lang.txt");
			System.out.println("파일 준비완료");
//		경로가 없을 수도 있고 파일을 읽는데 실패할 수 도 있으니 trycatch를 하지 않으면 에러발생,
//		자동완성을 시켜보면 try-catch문으로 만들어 준다.
//		다음으로 버퍼를 준비한다.
			BufferedReader br = new BufferedReader(fr);
			System.out.println("버퍼 준비완료");
//		파일을 읽어 오려면 다음과 같이 파일을 반복문을 돌려서 읽을 수 있다.
			while(true) {
//				또한 파일을 읽어 보는데 실패 할 수도 있으니 catch문을 추가한다.
				String msg = br.readLine();
				if(msg == null) {
					break;
				}
//				만든 데이터를 msg들을 add하여 배열로 만든다.
				datas.add(msg);
				//System.out.println(msg);
//				파일을 이렇게 하나씩 가져올 수 도 있지만 collection을 이용해서 배열화 할 수 있다.
			}
			System.out.println(datas);
		} catch (FileNotFoundException e) {
			System.out.println("존재하지 않는 파일");
		} catch(IOException e) {
			System.out.println("파일 읽기 실패");
		}
	}
}