Java

[Java]입출력/IO(1)__개발공부 27일차

하체는 스쿼트 2022. 3. 30. 07:10
입출력이란?

 

자바 입출력(Input / Output  == IO)

 

컴퓨터 내/외부의 장치 + 프로그램간에 데이터 주고 받는것이다.
예) 키보드 장치  ->   프로그램(Ex05.java) -> 콘솔창
    데이터 받기            데이터 주기
       입력                        출력

 

 

 

Stream

 

자바의 모든 입출력은 스트림(Stream)이라는 개념으로 이루어진다.

 

스트림(Stream)
   ㄱ.빨대 == 스트림 객체 물(데이터)을 입으로 마시기 위한 통로,수단(Stream)
   ㄴ. 단방향    이기에  방향을 기준으로 2가지 종류가 있다.
                                                     - 읽기(입력용) 스트림
                                                     - 쓰기(출력용) 스트림
   ㄷ. 스트림의 사전적 의미 : 흐르는 물

 

 

 

Stream의 종류

자바의 스트림은 2가지 종류 구분(대상) ****

    ㄱ.문자(텍스트) 스트림
        -읽기(입력용) 스트림 : 최상위 부모클래스 Reader
        -쓰기(출력용) 스트림 :       Writer
        -유니코드 2바이트 == 1문자 단위 == 2바이트 (16비트)
        -한 문자, 문자열, 문자배열

예) XXXReader, XXXWriter
BufferedReader, InputStreamReader, FileReader, FileWriter

 

new FileReader("a.txt") :  a.txt 파일을 문자로 읽게하는 문자 읽기 스트림 2바이트(1문자) 단위로 읽기위한 문자 스트림


    ㄴ.바이트 스트림
        -읽기(입력용) 스트림 :  InputStream
        -쓰기(출력용) 스트림 :  OutputStream
        -1바이트(8비트)

컴퓨터 처리과정에서 바이트보다 int로 처리된다. 그래서 int(정수)형으로 표현한다.
하지만 크기가 1바이트 이므로 크기는 1바이트 공간만 쓰여진다.
-바이트, 바이트배열, 정수(int)[ ][ ][ ][00001111]

예)XXXInputStream, XXXOutputStream
FileInputStream, FileOutputStream

 

 

 

보조스트림

 

보조스트림 - 어떤 스트림을 사용하기(IO) 더 쉽도록 보조해 주는 스트림

예) BufferedReader는 여기서 보조스트림이다.
    문자 보조 읽기용도의 스트림이다.
     BufferedReader br = new BuferedReader(new FileReader("a.txt"))
     br.readLine(); 한 라인 단위로 처리가 쉽게 만든다.
 
 

 

 

하위 폴더/파일 읽는법

 

 

 

파일/폴더 삭제

 

폴더를 삭제하고자 할때 폴더내에 다른 하위폴더 (ex : aaa bbb)가 있다면 폴더가 삭제되지 않는다.

이런경우에는 재귀함수를 사용해서 메서드를 하나 만들어서 사용해야한다.

 

 

 

파일/폴더 이름 변경 방법

 

 

 

 

exe 파일의 복사

 

exe 파일은 텍스트 스트림이 아니라 바이트 스트림으로 읽어야한다.

2바이트씩 읽다가는 파일이 깨질수도 있기때문이다.

 

 

 

 

 

flush()/close()

 

***매우 중요***
flush( ) : 스트림 객체에 저장된 놈을 실제 파일에 저장하고 스트림(빨대)은 비우자 라는 메서드이다.
close( ) : 선 flush가 된 후에 파일을 닫기 작업 하는 것이다.

 

 

 

 

*참고

현재 사용자 경로 얻는법

프로젝트 명까지 출력된다.

String curentDirectory = System.getProperty("user.dir");