ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [20회차-③] JAVA (Stream)
    JAVA 2021. 4. 20. 09:14

    강의명 : 오픈프레임워크 활용 디지털융합 SW엔지니어 양성 과정

    강의 날짜 : 21.04.19

     

     

    <스트림>

     

    [14회차-①] JAVA (스트림)

    강의명 : 오픈프레임워크 활용 디지털융합 SW엔지니어 양성 과정 강의 날짜 : 21.04.09 <스트림> 1. 스트림 여러 자료의 처리에 대한 기능을 구현한 클래스가 스트림이다. 자바에서 모든 입출력은 스

    crystal93.tistory.com

    예전 강의 참조

     

    * 레지스터 = 메소드 메모리

     

    * 폴더(윈도우)=디렉토리=패키지(자바)

    폴더는 파일들을 모아두는 곳인데, 폴더 안에는 폴더도 들어가 있는 경우가 있다.

    결국 폴더라는 것은 파일의 일종인 것이다.(특수 파일)

     

    * D드라이브 = 하드디스크 최상단 디렉토리 = root 디렉토리

    OS는 모든 구조가 계층(Tree)구조이다.

    디렉토리가 가지이며 실데이터를 가지고 있는 파일이 열매가 된다.

     

    * 파일의 위치는 패키지 단위이다.

     

    * 웹 화면 = 파일 = 웹 문서 파일

     

    * 클래스 파일의 외부에 어떤 것을 만드는 등 외부 객체와 통신(대화)할 때는 무조건 예외처리가 필수이다.

     

    * 컴퓨터는 클라인언트에게 파일을 보낼때 파일을 쪼개서 보내는 스트림 방식을 사용한다.

    사용자는 그것을 연속적(실시간)인 것으로 인식한다. 

     

    * 스트림은 입출력 관련이기 때문에 util패키지가 아닌 io패키지 안에 있다.

     

     

    1. FileWriter

     

    문자 단위 출력 스트림이다.

    생성자 파라미터에는 출력을 받을 파일명을 기입하는데 만일 같은 파일명이 있으면 덮어쓰기가 된다.

    위치는 현재 작업 중인 패키지이다.

     

    그 전 강의(14회차) 정리한 것 참조할 것.

     

    import java.io.FileWriter;
    
    public class WriteDemo1 {
    
    	public static void main(String[] args) throws Exception{ //예외처리
    		String source = "비어있어야 비로서 가득해 지는 사랑\n"+
    				" 영원히 사랑한다는 것은\n"+
    				" 평온한 마음으로 아침을 맞는다는 것입니다.\n";
    		char intxt[]=new char[source.length()];
    		source.getChars(0, source.length(), intxt, 0);
    		FileWriter fw = new FileWriter("data1.txt"); //문자 단위 출력 스트림
    		fw.write(intxt);
    		
    		fw.close();
    	}
    }

     

    main메소드에서 throws로 예외 전가를 하고 있는데,

    만약 main 메소드에서 예외가 발생하면 main을 호출한 jdk에게 예외를 전가하고 

    예외는 jdk가 처리한다.

     

    .getChars(시작 인덱스, 마지막 인덱스, 복사받을 객체, 복사받을 객체의 시작 인덱스)

    시작 인덱스부터 마지막 인덱스 사이의 문자들을 복사받을 객체의 시작 인덱스부터 저장한다.

     

    출력 스트림 객체를 생성하면서 File의 문을 열어둔 것이다.

     

    write()  메소드로 char형 자료를 한 글자씩 출력해준다.

     

    모든 실행이 끝난 후 스트림을 닫지 않으며 데이터 소실의 위험이 크므로 close()메소드로 꼭 문을 닫아주도록 한다.

     

     

    2. FileReader

     

    문자 단위 입력 스트림이다.

    생성자 파라미터에는 입력을 받을 파일명을 기입하는데 그런 파일이 없으면 예외가 발생한다.

    .\라고 위치를 주면 현재 위치라는 의미이다.

     

    그 전 강의(14회차) 정리한 것 참조할 것.

     

    import java.io.FileReader;
    
    public class ReadDemo1 {
    
    	public static void main(String[] args) throws Exception{ //예외처리
    		FileReader fr = new FileReader("data1.txt");
    		int i;
    		while ((i=fr.read())!=-1) {
    			System.out.print((char)i);
    		}
    	}
    }

     

    read메소드로 char 단위로 끊어서 읽어오며, 그것을 유니코드 단위로 가져온다.

    그러므로 출력시 (char)로 강제 형변환을 해주는 것이다.

     

    File의 끝을 NULL값으로 표시해주는데, 이 유니코드의 값이 -1이다.

    그러므로 -1이 되면 while반복문을 탈출한다.

     

    실행이 끝나면 입력 스트림을 close메소드로 닫아준다.

     

     

    3. NULL

     

    NULL의 사용 설명
    문자열 문자열의 끝을 컴퓨터가 표시해준다. 유니코드0
    파일 파일의 끝을 컴퓨터가 표시해준다. 유니코드 -1
    객체 객체를 선언만 하고 메모리를 할당해주지 않았을 때,
    객체는 주소를 갖지 못하고 NULL값을 가지게 된다.
    '알 수 없음'의 뜻이다.

     

     

    4. FileOutputStream

     

    바이트 단위 출력 스트림이다.

    생성자 파라미터에는 출력을 받을 파일명을 기입하는데 만일 같은 파일명이 있으면 덮어쓰기가 된다.

    위치는 현재 작업 중인 패키지이다.

     

    그 전 강의(14회차) 정리한 것 참조할 것.

     

    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class OutputDemo1 {
    
    	public static void main(String[] args) throws IOException{ //예외처리
    		
    		FileOutputStream fos = new FileOutputStream("stream1.txt");
    		
    		for(int i=0;i<20;i++) {
    			fos.write(i);
    		}
    		fos.close();
    		System.out.println("ByteStreamFile을 생성");
    	}
    }

     

    IOException은 입출력 관련 예외처리만 하는 클래스이다.

    Exception 상속은 받았지만 io패키지 안에 있어서 import를 해주어야 한다.

     

    바이트 단위로 출력을 하기 때문에 사람은 읽을 수 없는 기계어가 파일에 출력이 된 것이다.

     

     

    5. FileInputStream

     

    바이트 단위 입력 스트림이다.

    생성자 파라미터에는 입력을 받을 파일명을 기입하는데 그런 파일이 없으면 예외가 발생한다.

     

    그 전 강의(14회차) 정리한 것 참조할 것.

     

    import java.io.FileInputStream;
    import java.io.IOException;
    
    public class InputDemo1 {
    
    	public static void main(String[] args) throws IOException{
    		
    		FileInputStream fis = new FileInputStream("stream1.txt");
    		
    		int i;
    		while((i=fis.read())!=-1) { //입력
    			System.out.print(i);
    		}
    		System.out.println(); //줄 바꿈
    		System.out.println("ByteStream을  File로부터 입력"); //출력
    		fis.close();
    	}
    }

    read메소드로 파일의 끝(NULL=-1)을 만날 때까지 읽어오며, 그것을 int형 변수i에 저장한다.

     

    실행 파일은 바이트 단위로 사람이 읽을 수 없는 기계어이다.

    'JAVA' 카테고리의 다른 글

    [21회차-②] JAVA (네트워크)  (0) 2021.04.21
    [21회차-①] JAVA (File)  (0) 2021.04.21
    [20회차-②] JAVA (예외처리)  (0) 2021.04.20
    [20회차-①] JAVA(기타 클래스와 제네릭)  (0) 2021.04.20
    [19회차] JAVA (상속)  (0) 2021.04.17
Designed by Tistory.