티스토리 뷰

Java

java.io

살구르 2017. 1. 13. 14:48

1. InputStream, OutputStream(말단 Stream)

-1byte 단위

-한글이 깨짐(한글은 2byte이므로)

 

2. Reader, Writer

-2byte 단위

-InputStreamReader, OutputStreamWriter

ex) Reader reader = new InputStreamReader(System.in);

- 한글 한글자씩 입력 또는 출력 가능

 

3. BufferedReader, BufferedWriter

-Buffer에 2byte 씩 저장

-readLine() 메서드를 통해 한 line 씩 입력 또는 출력 가능

ex)

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

String s = in.readLine();

 

4. File IO

1)Read

FileInputStream - 1byte 단위

FileReader - 2byte 단위

BufferedReader(new FileReader("a.txt"));

 

 

ex)

try{
   FileReader fr = new FileReader("a.txt");
   BufferedReader br = new BufferedReader(fr);
   String temp = null;
   int i=0;
   while((temp=br.readLine())!=null){
    System.out.println((i++)+" "+temp);
   }
   br.close(); // close 순서 주의!

   fr.close();
  }catch(Exception e){
   System.out.println(e);
  }

 

2)Write

ex)

try{
   FileReader fr = new FileReader("a.txt");
   BufferedReader br = new BufferedReader(fr);
   
   FileWriter fw = new FileWriter("b.txt");
   BufferedWriter bw = new BufferedWriter(fw);
   String temp = null;
   int i=0;
   while((temp=br.readLine())!=null){
    bw.write((i++)+" "+temp+"\r\n");
   }
   bw.close();
   fw.close();
   br.close();
   bw.close();
  }catch(Exception e){
   System.out.println(e);
  }

 

5. BufferedWriter에 비해 PrintWriter 가 더 많은 기능을 가지고 있음

PrintWriter pw = new PrintWriter("a.txt");

PrintWriter pw2 = new PrintWriter(new FileWriter("a2.txt"));

PrintWriter pw3 = new PrintWriter(new FileOutputStream("a3.txt"));

 

-위의 예에서 보듯이 PrintWriter는 말단 Stream으로도 사용되고(pw), FilterStream으로도 사용된다(pw2,pw3)

 

ex)

try{
  PrintWriter pw = new PrintWriter("a.txt");
  PrintWriter pw2 = new PrintWriter(new FileOutputStream("a2.txt"));
  PrintWriter pw3 = new PrintWriter(new FileWriter("a3.txt"));
  pw.write("hi");
  pw2.write("hello");
  pw3.write("bye");
  pw.flush(); // close() 시키지 않아도 강제로 버퍼의 값을 파일에 출력
  pw2.flush();
  pw3.flush();
  pw.close();
  pw2.close();
  pw3.close();  
  }catch(Exception e){
   System.out.println(e);
  }

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함