ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터 스트림
    java 2020. 5. 9. 22:43

    참조 : 인프런 - 안드로이드를 위한 자바 - 데이터 스트림

     

    ●FilterStream

    -기본 스트림외에 다른 기능을 추가 하고 싶을 때 사용하는 스트림이다.

    -필터 스트림을 독립적으로 사용하지 못하고 기본 스트림과의 연결이 반드시 필요하다.

    -필터 스트림은 데이터를 송수신 할 수 있는 기능이 없다.

    -필터 스트림에 있는 입출력 함수는 직접 데이터를 입출력하는 것이 아니라 연결되어 있는 기본 스트림에 데이터를 전송하고 기본 스트림에서 데이터 송수신을 하게 된다.

    -필터 스트림은 생성자에 기본 스트림을 받고 있다. 생성자를 통해 기본 스트림이 데이터의 송수신을 직접 담당한다.

     

    필터 스트림에서 데이터를 가공하고 기본 스트림으로 아웃풋한다. 아웃풋된 데이터를 인풋할 때는 기본스트림을 통해 인풋 받고 필터스트림을 통해 원래의 데이터로 복구하고 데이터를 넘겨주게 된다. 필터스트림은 종류가 굉장히 많다. 데이터를 압축하는 zip 스트림, 데이터 보안을 위한 security스트림 등. 즉 기본스트림에다가 부가적인 기능을 붙인것.

     

    ●DataStream

    -기본 스트림을 통해 데이터 송수신을 하기 위해서는 바이트 형태의 데이터로 송수신을 하게 된다.

    -개발자가 직접 송수신할 데이터를 바이트화 시키거나 바이트화 되어있는 데이터를 사용하고자 하는 형태로 변환해야 하는데 이 작업을 해주는 스트림이다.

     

    데이터 송수신 메서드

    -readXXX : read메서드가 굉장히 많이 존재하는 데 각 타입별로 존재하고 있다. 정수형일 경우 readInt를 사용하면 바이트로 넘어온 데이터를 정수형으로 변환하여 되돌려 준다.

    -writeXXX : 송수신하고자 하는 데이터를 바이트 형태로 변환하여 기본 스트림에게 넘겨준다. 정수형일 경우 writeInt를 사용한다.

     

    기본 스트림을 통해 받아온 데이터는 바이트 형태의 데이터이다. 바이트 형태로 되어있는 데이터를 실제 사용하는 형태 (int, char)등으로 변환해준다.

     

    아웃풋

    import java.io.DataOutputStream;
    import java.io.FileOutputStream;
    
    public class DataStreamTest1 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		try {
    			String fileName = "D:\\Test!!!!!\\b.txt";
    			FileOutputStream fos = new FileOutputStream(fileName);
    			DataOutputStream dos = new DataOutputStream(fos);
    			
    			
    			dos.writeUTF("안녕하세요");//문자열
    			dos.writeInt(10);
    			dos.writeInt(20);
    			//데이터를 읽어올때(인풋)
    			//반드시 보낼때(아웃풋)의 형식을 맞춰줘야 한다.
    			//이 경우에는 문자열,정수,정수의 형식이다.
    			
    			
    			dos.flush();
    			dos.close();
    			fos.close();
    			System.out.println("출력완료");
    			
    		}catch(Exception e) {
    			
    		}
    	}
    
    }
    

     

    인풋

    import java.io.DataInputStream;
    import java.io.FileInputStream;
    
    public class DataStreamTest2 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		try {
    			String fileName = "D:\\Test!!!!!\\b.txt";
    			FileInputStream fis = new FileInputStream(fileName);
    			DataInputStream dis = new DataInputStream(fis);
    			
    			String str = dis.readUTF();
    			int a = dis.readInt();
    			int b = dis.readInt();
    			
    			dis.close();
    			fis.close();
    			
    			System.out.println(str);
    			System.out.println(a);
    			System.out.println(b);
    		}catch(Exception e) {
    			
    		}
    	}
    
    }
    

     

     

     

     

    정리 

    -필터 스트림은 기본 스트림에 기능을 더하고자 할 때 사용한다.

    -DataStream은 송수신하고자 하는 데이터를 바이트 형태로 변환하여 기본 스트림으로 넘겨주거나 기본 스트림을 통해 받은 데이터를 사용하고자 하는 형태의 데이터로 변환해주는 역할을 한다.

    'java' 카테고리의 다른 글

    ObjectStream  (0) 2020.05.10
    2byteStream  (0) 2020.05.09
    FileStream  (0) 2020.05.09
    폴더가 존재하는지 존재하지 않는지 보고 존재하지 않으면 생성  (0) 2020.05.09
    File.mkdir()과 File.mkdirs()의 차이점  (0) 2020.05.09

    댓글

Designed by Tistory.