자 벌써 세번째 시간이네요~ 사실 저야 오늘 하루만에 다 포스팅하는거지만 ;;
암튼 이번 시간에는 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("파일 저장이 완료되었습니다."); } }
'자바 기본 공부 > 네트워크 개발' 카테고리의 다른 글
lec01-Java I/O #4 File Reader 과 File Writer (0) | 2015.01.14 |
---|---|
lec01-Java I/O #2 Reader 과 Writer (0) | 2015.01.14 |
lec01-Java I/O #1 InputStream 과 OutputStream (0) | 2015.01.14 |
[ Java Network 기초 ] 네트워크 기초이론 및 설명. (0) | 2009.06.23 |