소프트웨어 개발/Java - Basic

InputStream OutputStream에 관련

늘근이 2014. 10. 14. 10:29

 

      public static void main(String[] args) {

           

            // io프로그래밍 순서가 중요하냐! close 중요하기 때문이다.

           

            //현재 시간을 long으로 변환

            long start = System.currentTimeMillis();

            //첫번째는 io관련 객체를 선언함

            InputStream in = null;

            OutputStream out = null;

            try{

                  //InputStream 이나 OutputStream 자손중에서 주인공의 인스턴스가 나온다.

                  //근데 1바이트씩 읽고 1바이트씩 쓰는건 오래걸린다.

                  /*in = new FileInputStream("c:/temp/SDSProxy.exe");

                  out = new FileOutputStream("c:/temp/sdspp.exe");

                  int data = -1;

                  while((data = in.read())!=-1){

                             out.write(data);

                  }*/

                 

                  //따라서 아래와 같이 하면 편하다

                  /*in = new FileInputStream("c:/temp/SDSProxy.exe");

                  out = new FileOutputStream("c:/temp/sdspp.exe");

                  byte[] buffer = new byte[1024]; //너무 크게잡으면 메모리는 많이 사용하고 속도는 상향이 없다. 보통 1024 배수로 잡아줌.

                  int readCount = -1;

                  while((readCount = in.read(buffer)) != -1){

                        out.write(buffer,0,readCount); //버퍼읽어들인 값만큼 1050바이트가 있으면 26바이트가 남을수 있으니까

                  }*/

                 

                  //이건 바이트 1,2,3 저장하는것

                  /*byte[] data = new byte[]{(byte)1,(byte)2, (byte)3};

                  in = new ByteArrayInputStream(data);*/

                 

                 

                  //이건 바이트로 꺼내오는것

                  /*in = new FileInputStream("c:/temp/SDSProxy.exe");

                  out = new ByteArrayOutputStream();

                  byte[] buffer = new byte[1024]; //너무 크게잡으면 메모리는 많이 사용하고 속도는 상향이 없다. 보통 1024 배수로 잡아줌.

                  int readCount = -1;

                  while((readCount = in.read(buffer)) != -1){

                        out.write(buffer,0,readCount); //버퍼읽어들인 값만큼 1050바이트가 있으면 26바이트가 남을수 있으니까

                  }

                  ByteArrayOutputStream bao = (ByteArrayOutputStream)out;

                  byte[] data = bao.toByteArray();

                  for(int i = 0 ; i<data.length ; i++){

                        System.out.println(data[i]);

                  }*/

                 

            }catch(Exception e){

                  e.printStackTrace();

            }finally{

                  if(out!=null){

                        try {

                             out.close();

                        } catch (IOException e) {

                             // TODO Auto-generated catch block

                             e.printStackTrace();

                        }

                  }

                  if(in!=null){

                        try {

                             in.close();

                        } catch (IOException e) {

                             // TODO Auto-generated catch block

                             e.printStackTrace();

                        }

                  }

                 

            }

           

            long end = System.currentTimeMillis();

            System.out.println(end - start);

           

      }//end main