• [자바] FileInputStream을 read()메서드와 배열을 사용해서 출력한 예시 만들어보기

    2022. 12. 17.

    by. 김홍원

    1. read()메서드를 사용해서 inputStream 사용하기

     

     

    package Example01;

     

    import java.io.FileInputStream;

     

    public class ExampleClass01{

     

      public static void main(String[] args){

      

         InputStream inputStream = null;

         try {

             inputStream = new FileInputStream("경로 주소.txt");

             int data = 0;

    // 변수로 int data = 0

     

             while(true) {

                   try {

                       data = inputStream.read();

    // read()메서드를 사용하여 1바이트 단위로 추출하기//

     

                 } catch (IOException e) {

                      e.printStackTrace();

                 if(data = -1) break;

     

    // int data 값을 = 0 으로 설정하고 while 반복문을 통해서 더 이상 읽을 것이 없을 때 -1 이 나오도록 처리한다.//

     

    // 해당 부분은 while값이 반복되는 것을 설정하기 때문에  while(( data = inputStream.read()) != -1);

       System.out.println((char)1);   로 data 값이 -1이 아닌동안 read()메서드로 한 바이트를 계속해서 반복해서 읽도록

    코딩할 수 있다. 해당 부분과 if문을 사용해서 -1로 break를 사용하는 방법 2가지 모두 숙지하자.//        

     

              System.out.println("data: " + data);

       }

    }catch (FileNotFoundException e){

        e.printStackTrace();

    } finally {

        try {         

                if(inputStream != null) inputStream.close();

     

    // finally 를 사용해서 반드시 구현되는 코드를 입력한 후 inputStream이 null 선언이 아닌 경우  close()함수로 종료되게 설정한다.//

     

             } catch (IOException e) {

              e.printStackTrace():

       }

      }

     

     }

     

    }

     

     

    == 출력시 파일 경로 주소에 대한 값이 바이트 값으로 아스키 값으로 나오게 된다. == 

     

    2. 배열 크기를 바이트 값으로 정해서 inputStream을 사용하기

     

      public static void main(String[] args){

      

         InputStream inputStream = null;

          try {

     

             inputStream = new FileInputStream("경로 주소.txt");

             int data = 0;

             byte[] fis = new byte [5];  // ==> 배열 크기를 5바이트씩으로 계산한다는 의미이다.

     

             while(true) {

                   try {

                       data = inputStream.read();

    // read()메서드를 사용하여 1바이트 단위로 추출하기//

     

                 } catch (IOException e) {

                      e.printStackTrace();

             if(data = -1) break;

             System.out.println("data: " + data);

     

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

             System.out.println("fis["+ i + "] : " + fis[i]);

     

    // 배열이기 때문에 for문으로 돌린다 . // 

     

         }

       }  

    }catch (FileNotFoundException e){

        e.printStackTrace();

    } finally {

        try {         

                if(inputStream != null) inputStream.close();

     

        } catch (IOException e) {

              e.printStackTrace():

       }

      }

     

    }

     

     

    댓글