FileInputStream
FileOutputStream
파일에 한 바이트씩 자료 읽고 쓰는데 사용.
입력스트림은 파일 없을 때 예외
출력스트림은 파일 없을 때 생성 & 출력
try{
FileInputStream fls = new FileInputStream("input.txt');
int i;
//파일 끝에서 -1 출력
while( (i = fls.read()) != -1){
System.out.println((char)i);
}
}
catch (Exception e)
{
System.out.println(e);
}finally{
try{
fls.cloes();
} catch(Exception e)
{
System.out.println(e);
}
}
try{
FileInputStream fls = new FileInputStream("input2.txt');
int i;
//파일 끝에서 -1 출력
byte[] bs = new byte[10];
//지정 바이트개수 만큼 읽어 들임
while( (i = fls.read(bs)) != -1){
for(int k =0; k<i; k++)
System.out.println((char)bs[k]);
//읽은 개수만큼 문자 반환 , i에는 읽은 바이트 수가 지정됨
//읽어들이지 않은 부분까지 출력한다면 쓰레기 값이 나옴.
}
}
catch (Exception e)
{
System.out.println(e);
}finally{
try{
fls.cloes();
} catch(Exception e)
{
System.out.println(e);
}
}
try{
FileOutputStream fos = new FileOutputStream("output.txt");
fos.write(65);
fos.write(66);
fos.write(67);
}
catch(Exception e)
{
System.out.println(e);
}
파일에는 abc 문자로 변환되어 저장됨
65를 저장하고 싶으면 한바이트씩 저장되므로
fos.write(6);
fos.write(5);
이렇게 저장.
FileInputStream은 바이트 단위로 읽으므로 한글은 2바이트씩 사용하므로 깨짐
따라서
FileInputStream fls = new FileInputStream("input.txt");
InputStreamReader isr = new InputStreamReader(fls);
바이트를 문자로 출력해주는 보조스트림을 사용해서 감싼 뒤에
int i ;
while((i = isr.read()) != -1)
{
System.out.println((char)i);
}
해주면 문자 정상 출력함
이게 복잡하면 그냥
FileReader fls = new FileReader("input.txt");
사용하면 똑같은 작용
int i ;
while((i = fls.read()) != -1)
{
System.out.println((char)i);
}
FileWriter fw = new FileWriter("wr.txt");
fw.write('A');
fw.write("안녕하세요");
기존의 FileOutputStream은 한 바이트 씩 밖에 입력 못하는데 이것은 여러 바이트 가능.
'Java' 카테고리의 다른 글
RandomAcessFile (0) | 2019.11.08 |
---|---|
직렬화 (0) | 2019.11.08 |
입출력 스트림 (0) | 2019.11.05 |
자바 연습 (스트림) (0) | 2019.11.04 |
예외 처리 (0) | 2019.11.04 |