lec01-Java I/O #3 File InputStream / File OutputStream

2015. 1. 14. 15:46 - 에릭투스

자 벌써 세번째 시간이네요~ 사실 저야 오늘 하루만에 다 포스팅하는거지만 ;;
암튼 이번 시간에는 File처리를 해볼거에요~~
사용자에게 콘솔로 문자열을 입력받는 것도 I/O지만, 파일을 읽고 쓰는 것도 I/O 랍니다~

먼저 파일을 읽어서 화면(콘솔)에 표시해봅시다!!
파일을 읽는 것도 I/O이기 때문에 이전 예제에서 사용했던 방식과 유사합니다.
InputStream형태이므로 byte 타입을 사용하겠죠??

파일 경로는 지정하고, FileInputStream을 통해 파일에 접근하며, read함수를 통해 입력스트림 읽고 byte배열이 저장됩니다.
임시 저장된 버퍼(byte[])을 통해 실제 문자열을 String형태로 만드는 거죠!!
참 쉽죠잉??



/**
*  예제) FileInputStream 기초
* 	파일을 통해 입력받은 데이터를 콘솔에 표시.
*/
public static void fileInputStreamExample(){
		String fileName = "file"+File.separator+"english.txt";
		int read = 0;
		byte[] buffer = new byte[512];
		
		try(FileInputStream fis = new FileInputStream(fileName)){
			while((read=fis.read(buffer, 0 ,buffer.length))!=-1){
				System.out.println(new String(buffer,0,read));
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
}


두번째는 출력예제입니다~ 지금까지의 출력 예제는 간단해서 크게 설명하지 않고 넘어갔는데...
이번엔 특별히 파일처리이니 설명을 또 자세하게 해보죠!! ㅎㅎ
이번엔 조금 난이도를 높여서 사용자에게 입력받은 문자열을 파일로 작성해보는 예제를 진행할겁니다!!
그래서 Scanner함수!! 초보자의 대표적인 유틸 클래스죠?

스캐너 함수를 이용하여 표준입력(System.in)을 통해 들어오는 문자열을 입력받습니다. (Scanner.nextLine());
FileOutputStream을 통하여 입력 받은 String타입의 문자열을 byte 배열 형태로 변환하여
기존에 출력했던 write함수를 이용해 출력합니다.

같은 write함수지만, File OutputStream객체이므로, write메소드를 통해 출력되는 문자열은 파일로 저장되게 된답니다!!
참쉽죠?? ^^
/**
*  예제) FileOutStream 기초
* 	표준입력을 통해 입력받은 데이터를, 파일로 출력.
*/
public static void fileOutputStreamExample(){
		String fileName = "file"+File.separator+"client.txt";
		Scanner scan = new Scanner(System.in);
		try(FileOutputStream out = new FileOutputStream(fileName)){
			while(true){
				System.out.println("메시지를 입력해주세요. *종료시 exit 입력");
				String text = scan.nextLine();
				
				if("write".equals(text)){
					break;
				}
				
				System.out.println("입력한 데이터 : "+text+" ("+text.length()+")");
				out.write(text.getBytes());
				out.write(System.lineSeparator().getBytes());
				out.flush();
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally{
			System.out.println("파일 저장이 완료되었습니다.");
		}
}

다른 카테고리의 글 목록

자바 기본 공부/네트워크 개발 카테고리의 포스트를 톺아봅니다