ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA 39] 자바 File Stream / Data Stream ( I / O )
    Language/Java 2018. 4. 28. 22:11
    반응형


    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    import java.io.*;
     
    class FDStream{        // File Data I/O Stream
        FileInputStream fis;    FileOutputStream fos;
        DataInputStream dis;    DataOutputStream dos;
     
        FDStream(){
            String text = "CIVIC.txt";
            try{
                fos = new FileOutputStream(text);
                dos = new DataOutputStream(fos);
     
                fis = new FileInputStream(text);
                dis = new DataInputStream(fis);
     
                writeM();
                readM();
            }catch(FileNotFoundException nfe){
            }catch(IOException ioe){}
        }
     
        void writeM() throws IOException{
            byte     b = 10;           //    1
            short    s = 20;           //    2
            char     c= 'A';            //    2
     
            int      i = 30;           //    4
            long    lo = 40;          //    8
     
            float    f = 50.0f;        //    4
            double   d = 60.0;      //    8
     
            boolean flag = true;   //    1
            String str = "CIVIC";
     
            dos.writeByte(b);
            dos.writeShort(s);
            dos.writeChar(c);
     
            dos.writeInt(i);
            dos.writeLong(lo);
     
            dos.writeFloat(f);
            dos.writeDouble(b);
     
            dos.writeBoolean(flag);
            dos.writeUTF(str);
            
            dos.flush();
        }
     
        void readM() throws IOException{
            byte     b = dis.readByte();
            short    s = dis.readShort();
            char     c = dis.readChar();
     
            int      i = dis.readInt();
            long    lo = dis.readLong();
     
            float     f = dis.readFloat();
            double   d = dis.readDouble();
     
            boolean flag = dis.readBoolean();
            String    str = dis.readUTF();
     
            System.out.println("b : " + b + "\ns : " + s + "\nc : " + c);
            System.out.println("i : " + i + "\nlo : " + lo);
            System.out.println("f : " + f + "\nd : " + d);
            System.out.println("flag : " + flag + "\nstr : " + str);
        }
     
        public static void main(String[] args){
            FDStream fds = new FDStream();
        }
    }
    cs






    <참고>

     - 직렬화(Serializable)가 가능한 객체만을 읽고 쓸 수 있음 

        ( java.io.Serializable 상속받으면 직렬화 가능 )


    - 객체에 포함된 속성과 속성값만 전송됨

       ( 메소드와 static 변수와 값은 전송되지 않음 ) 


    - transient 제한자가 붙으면 해당 속성값은 전송되지 못함


    - 멤버변수도 Serializable을 상속받은 것만 전송 가능 


    - 기본변수는 Serializable의 상속여부와 상관없이 전송가능 


     - Marked Interface 

          : Serializable 처럼 추상메소드와 상수가 없는 인터페이스


    - 직렬화의 용어 

        - 마셜링    : 객체를 byte단위로 쪼개는 것 

        - 언마셜링 : 바이트단위의 객체를 원래대로 조립하는 것 

    반응형
Designed by Tistory.