일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JDBC
- Serializable
- InputStream
- array
- Connection
- 16bit
- Reader
- 오라클
- statement
- stream
- Annotaion
- set
- Join
- transient
- 상속
- 8bit
- 조회
- select
- 난수
- DB연동
- DB
- java
- Transaction
- 다이얼로그
- 자바
- where
- Oracle
- swing
- driver
- 예외처리
- Today
- Total
오버플로
[Java] IO(Input/Output) Stream - 8bit Stream, 16bit Stream / File Class 본문
[Java] IO(Input/Output) Stream - 8bit Stream, 16bit Stream / File Class
NACO 2021. 8. 29. 17:461. IO(Input/Output) Stream
- JVM에서 JVM외부에 존재하는 데이터를 읽어들이거나(Input),
JVM내부의 데이터를 JVM외부로 내보낼 때(Output) 사용하는 기술 (txt, dat만 가능)
- 독자 포맷(hwp,xls,ppt)이 있는 파일은 읽어 들일 수 있지만 내용을 확인할 수 없음
- 독자 포맷의 파일을 생성할 수 없음
- java.io.package에서 관련 클래스를 제공
- 8bit stream(byte 기반)과 16bit stram(문자열 기반)이 제공
- 단방향 스트림 (읽기 스트림은 읽기만 가능하고, 쓰기 스트림은 쓰기만 가능)
- 스트림은 연결해서 사용할 수 있음 (FileReader랑 BufferedReader 같이 사용하는 등)
- Stream은 사용 후 꼭 close()! // 스트림을 끊어서 메모리 누수(memory leak)을 막자
1) 8bit Stream
- byte 기반 스트림
- 모든 data를 읽고 쓸 수 있는 스트림
- 한 byte씩만 읽어들일 수 있음
- 파일 복사에 많이 씀
- 16bit Stream보다 속도가 빠름 / 단, 한 번에 보내고 받는 양은 적음
- 부모클래스는 java.io.InputStream, java.io.OutputStream
읽기 스트림 - InputStream | |
FileInputStream | 파일에서 읽어 들이는 일 |
DatainputStream | 자바의 기본 데이터형으로 읽어 들일 때 |
ObjectInputStream | 객체를 읽어 들일 때 |
쓰기 스트림 - OutputStream | |
FileOutputStream | 파일로 내보내는 일 |
DataOutputStream | 자바의 기본 데이터형을 내보내는 일 |
ObjectOutputStream | 객체를 내보내는 일 |
2) 16bit Stream
- 문자열 기반 스트림
- 문자열만 읽고 쓸 수 있는 스트림
- 문자열을 입력받기 위해서 고안한 Stream
- 8bit 보다 속도가 느림 / 단, 한 번에 보내고 받는 양은 큼
- 부모클래스는 java.io.Reader, java.io.Writer
읽기 스트림 - Reader | |
FileReader | 파일에서 읽어 들이는 일 |
BufferedReader | 16bit 스트림의 속도 향상을 위해 만들어진 Stream |
InputStreamReader | 8bit 스트림과 16bit 스트림을 연결할 때 사용 |
쓰기 스트림 - Writer | |
FileWriter | 파일로 내보내는 일 |
BufferedWriter | 쓰기속도 향상 |
OutputStreamWriter | 8bit 스크림과 16bit 스트림을 연결할 때 사용 |
2. java.io.File
- HDD(하드디스크)에 존재하는 파일의 정보를 얻을 때, directory를 생성할 때, 파일 삭제할 때 사용
- 사용법)
<-- 파일 정보 -->
① 객체 생성 :
File file = new File (“경로”); // C:/dev/env.bat
② 하기 method 활용
- 절대경로 얻기 :
> 파일에 접근할 수 있는 두가지 경로 : C:/dev/env.bat or c:/dev/env.bat – 드라이브 문자 대소문자 상관없음
> String str = file.getAbsolutePath();
- 규범경로 얻기 :
> 파일에 접근할 수 있는 하나의 경로 : C:/dev/env.bat – 드라이브 문자 항상 대문자
> try {String path = file.getCannonicalPath(); // IOException 존재하므로 try~catch
} catch (IOException ie) { }
- 경로 얻기 : String path = file.getPath();
- 디렉토리명 얻기 : String directory = file.getParent() ; // C:/dev/
- 파일명 얻기 : String fileName = file.getName(); / env.bat
- 파일인지? : boolean flag = file.isFile();
- 폴더인지? : boolean flag = file.isDirectory();
- 읽기 가능? : boolean flag = file.canRead();
- 쓰기 가능? : boolean flag = file.canWrite();
- 실행 가능? : boolean flag = file.canExecute();
- 숨김파일 : boolean flag = file. isHidden();
- 마지막 수정일자 : long modified = file.lastmodified();
- 파일 있는지 : file.exists();
<-- Directory 생성 -->
① 객체 생성 : 생성할 폴더명을 가진 File 생성
FIle file = new File (“e:/dev/temp1”)
② 폴더 생성 : 폴더가 존재하면 false 반환, 존재하지 않으면 폴더를 생성하고 true 반환
file.mkdir(); // 상위폴더가 존재하지 않으면 폴더를 생성할 수 없음 // dev 폴더 없으면 생성 불가
file.mkdirs(); // 상위폴더가 존재하지 않으면 상위 폴더부터 폴더를 생성함 // dev부터 만들고 temp1 생성
<-- 파일 삭제 -->
① 삭제할 파일명으로 File을 생성
File file = new File(“경로”);
② 파일 삭제
file.delete();
<-- 파일명 변경 -->
① 원본 파일명으로 File을 생성
File file = new File (“경로”);
② 변경할 파일명으로 File 생성
File refile = new File (“변경할 경로”);
③ 변경할 이름을 설정 : file.renameTo(refile);
'Java' 카테고리의 다른 글
[Java] IO Stream 활용 (2) - 파일 쓰기 (0) | 2021.08.31 |
---|---|
[Java] IO Stream 활용 (1) - 파일 읽기 (0) | 2021.08.30 |
[Java] Exception Handling - throws / throw / 사용자 정의 예외처리 Class (0) | 2021.08.26 |
[Java] Exception Handling - Try~catch / Finally (0) | 2021.08.25 |
[Java] Exception Handling (0) | 2021.08.24 |