ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 스트림
    공부 2022. 7. 26. 15:12
    728x90

    스트림: 데이터를 주고 받을 수 있는 통로, 사용용도에 따라 굉장히 다양한 스트림이 존재

     

    입력 스트림: InputStream, FileInputStream, BufferedInputStream, Reader, BufferedReader 등

    출력 스트림: OutputStream, FileOutputStream, BufferedOutputStream, Writer, BufferedWriter 등

     

    FileOutputStream outputStream= new FileOutputStream("파일 주소");

    통로를 열어 파일에 접근, 해당 파일이 없으면 파일 생성

            for(int i=1;i<11;i++){
                String data=i+"번째 라인";
                outputStream.write(data.getBytes());
            }

    파일에 작성, byte 단위로 작성

    import java.io.FileOutputStream;
    import java.io.IOException;

    public class Ex02 {
        public static void main(String[] args) throws IOException {
            FileOutputStream outputStream= new FileOutputStream("주소");
            for(int i=1;i<11;i++){
                String data=i+"번째 라인";
                outputStream.write(data.getBytes());
            }
            outputStream.close(); //닫기
        }
    }
     

     

    FileWriter 사용

     

    import java.io.FileWriter;
    import java.io.IOException;
    public class Ex02 {
        public static void main(String[] args) throws IOException {
            FileWriter fw= new FileWriter("주소");
            for(int i=1;i<11;i++){
                String data=i+"번째 라인";
                fw.write(data);
            }
            fw.close(); //닫기
        }
    }

     

    byte를 사용하지 않아도 된다.

     

     

    PrintWriter 사용

    import java.io.IOException;
    import java.io.PrintWriter;
    public class Ex02 {
        public static void main(String[] args) throws IOException {
            PrintWriter pw= new PrintWriter("주소");
            for(int i=1;i<11;i++){
                String data=i+"번째 라인";
                pw.println(data);
            }
            pw.close(); //닫기
        }
    }
     
    println 사용 가능
     

     

    FileInputStream 사용

    import java.io.FileInputStream;
    import java.io.IOException;

    public class Ex03 {
        public static void main(String[] args) throws IOException {
            byte[]b=new byte[1024];
            FileInputStream fis= new FileInputStream("주소");
            fis.read(b);
            System.out.println(new String(b));
            fis.close();
        }
    }

    byte로 읽음

     

    BufferedReader 사용

    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;

    public class Ex03 {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new FileReader("주소"));
            while(true){
                String line=br.readLine();
                if(line==null){
                    break;
                }
                System.out.println(line);
            }
        }
    }

    더 간단하다.

     

    파일 읽고 복사하기

    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.PrintWriter;
    public class copy {
        public static void main(String[] args)throws IOException {
            BufferedReader br = new BufferedReader(new FileReader("읽을 파일 주소"));
            PrintWriter pw= new PrintWriter("복사된 파일 주소");
            while(true){
                String line=br.readLine();
                if(line==null){
                    break;
                }
                pw.println(line);
            }
            pw.close();
            br.close();
        }
    }

    입력스트림을 이용하여 파일을 읽고, 출력 스트림을 이용하여 읽은 내용을 쓴다.

     

    이미지 파일 복사하기

    import java.io.FileInputStream;
    import java.io.FileOutputStream;

    public class Ex05 {
        public static void main(String[] args)throws Exception {
            FileInputStream fis= new FileInputStream("이미지 파일");
            FileOutputStream fos= new FileOutputStream("복사된 파일");
            while(true){
                int b=fis.read();
                if(b==-1){
                    break;
                }
                fos.write(b);
            }
            fis.close();
            fos.close();
        }
    }

    이미지는 FileInputStream을 이용하여 byte를 이용하여 파일을 복사한다.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    728x90
    반응형

    '공부' 카테고리의 다른 글

    자바 쓰레드  (0) 2022.07.27
    네트워크 스트림  (0) 2022.07.26
    자바 예외 처리  (0) 2022.07.26
    7계층 HTTP 프로토콜  (0) 2022.07.26
    자바 중복 문자 제거  (0) 2022.02.14

    댓글

Designed by Tistory.