220114 File 내보내기 정리
- BufferedReader★
ex 입력받은 문자열 전부 읽기 BufferedReaderTest.java
InputStream is = System.in;
InputStreamReader isr = new InputStreamReader( is );
BufferedReader br = new BufferedReader( isr ); //매개변수 자료형이 Reader이기 때문에 Reader의 하위클래스인 InputStreamReader도 입력 가능
위의 세줄을 한 줄로 줄여서 쓰면
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String inputString = br.readLine(); //BufferedReader 클래스의 readLine() 메소드-> 입력받은 값을 모두 읽어 문자열로 만들어 반환함
inputString 출력하면 입력한 값 그대로 나옴 -> 입력받은 모든 값을 하나의 String형 문자열로 만들어 String 객체 inputString에 할당했기 때문!
- File Class
ex2 FileOutputStream (Writer)
// File에서 데이터를 읽어오는 FileInputStream 객체 생성
FileInputStream fis = new FileInputStream( "read.txt" );
// File에 데이터를 전송하기 위한 FileOutputStream 객체 생성
FileOutputStream file = new FileInputStream( "read1.txt" );
while(( int input = fis.read() ) != -1 ) {
System.out.print( (char)input ); //화면 출력 부분
fos.write( input ); // 다른 파일에 쓰는 부분
}
//----> Input으로 read를 읽어와서 그 값을 int형 input에 보내고 그 값을 write()메소드를 이용해 read1에 써내게 됨 - 일종의 복사본이 만들어지는 것
//---> OutputStream은 1byte씩 읽고, Writer는 2byte씩 읽음
** 과제 코드 분석
주제: 키보드로 입력한 문장을 파일(result.txt)로 저장하는 프로그램 | |
목표: BufferedReader 이용해 문자열을 전부 가져와 FileOutputWriter로 result.txt 파일에 출력 | |
try { // InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br= new BufferedReader(new InputStreamReader(System.in)); FileWriter fw= new FileWriter("C:\\Users\\Administrator\\Desktop\\JVex\\result1.txt"); |
예외처리 BufferedReader 객체 생성 시 매개변수 부분을 isr로 줄여 사용하고 싶다면 InputStreamReader 객체 생성하면 됨 2byte씩 읽을 수 있는 FileWriter로 출력할 파일 생성 |
int inValue=0; while((inValue=br.read())!=-1) { fw.write(inValue); fw.flush(); |
BufferedReader에서 받은 문자를 하나씩 읽고 그 값을 fw.write로 버퍼에 옮기는 과정을 문장이 끝날 때까지(inValue=-1) 반복 fw.flush()로 FileWriter 내부 버퍼의 내용을 result.txt 파일에 넘김 --> 중요!! 이거 없으면 파일 텅 비어있음 |
fw.close(); }catch(Exception e) { e.printStackTrace(); } |
파일 내보내기 끝나면 close() |