2019. 3. 25. 22:11ㆍJAVA
--------------------------------Properties----------------------------
properties는 Hashtable의 하위 클래스여서 특징을 가지고 있지만 차이점은
키와 값을 String값인것이다.
properties에서는 여러설정값을 저장할 수 있다. 그때는 .을 써서 작성한다.
그리고 값을 불러올때 getProperties을 사용한다.
getProperties를 사용할때 #을붙이면 주석으로 봐서 값이 null이 된다.
그리고 값을 여러줄에 걸쳐 쓰고싶을때 마지막에 한칸띄고 \를 입력하면
한줄로 이어진다.
-----------------------------LIFO와 FIFO 컬렉션------------------------
LIFO
스택 : 후입선출 구조
.push() 를 사용해 값을 넣고
.pop() 을 이용해서 값을 꺼내온다. 꺼내오면 객체에서 삭제한다.
.peek() 을 이용해서 값을 꺼내온다. 꺼내와도 객체에서 삭제되지않는다.
FIFO
큐 : 선입선출 구조
예시) 순서대로 해야하는것 - PC에서 프린터 출력과정
.offer(E e) 를 사용해서 객체를 넣는다.
.peek() 을 사용하여 객체하나를 가져온다. 객체를 큐에서 제거하지않는다.
.poll() 을 사용해서 객체하나를 가져온다. 객체를 큐에서 제거한다.
---------------------------이진트리------------------------------
이진트리란 여러 개의 노드가 트리형태로 연결된 구조이다.
위를 부모노드 아래를 자식노드라 하는데 부모노드를 최대 2개의 자식노드를 가질수 있다.
주로 빠른 검색을 위해 사용된다.
--------------------------IO 패키지------------------------------
프로그램에서 데이터를 외부에서 읽고 출력하는 작업이 빈번하게 일어나는데 그것을
실행하는 패키지가 IO패키지이다.
파일의 종류는 바이너리(이진)파일과 텍스트파일이 있다
텍스트 - 메모장으로 열리는 프로그램
바이너리(이진) 파일
이미지, 워드파일, ppt, 압축파일 등
입출력 파일 타입에 나뉜다.
바이트 스트림 - 추상메소드이며 파일업로드/다운로드, 파일저장/복사에 사용된다.
InputStream
read(), close()를 정의하고있다.
OutputStream
write(), close(), flush()를 정의하고있다.
문자(캐릭터) 스트림 - 추상메소드이며 텍스트파일의 내용읽기/내용기록 할 때 사용된다.
Read
read(), close() 를 정의하고있다.
Write
write(), close(), flush()를 정의하고있다.
Reader(입력), Writer(출력) 라 써있는것은 텍스트파일만 가능하다.
InputStream(입력), OutputStream(출력) 라 써있는것은 바이너리파일과 텍스트파일이 가능하다.
(텍스트도 가능하지만 한글은 바이트스트림이 깨져서 문자 스트림으로 한다.)
(보조 스트림)
문자 스트림 입력, 출력은 주로 밑 두개가 많이 쓰인다.
(BufferedReader, PrintWriter)
스트림 -----------바이트 스트림-------------InputStream
| |
| -----------------------OutPutStream
|
------문자 스트림----------------Read--------------BufferedReader
|
---------Write--------------PrintWriter
============IO File==============
지정된 파일의 정보를 가지는 파일객체를 File이라 한다.
주로 쓰는 메소드
String .getName()
- 파일의 이름을 가지고온다.
long .length()
- 파일의 사이즈가 바이트 단위로 나온다.
String .getPath()
- 현재 파일의 경로를 나타내준다.
String .getParent()
- 현재 파일이 저장된 디렉토리 경로를 나타내준다.
boolean .isFile()
- 파일인지 여부를 반환한다.
boolean .isDirectory()
- 디렉토리인지 여부를 반환한다.
boolean .exist()
- 파일이 존재하는지 여부를 반환한다.
long lastModified()
- 파일의 최종수정일자를 유닉스시간으로 반환한다.
file.createNewFile()
- 파일생성하기
.mkdir()
- 디렉토리 생성하기
.mkdirs()
- 여러 디렉토리 생성하기
.delete()
- 파일을 삭제한다.(디렉토리 일경우 디렉토리 안에 모두 삭제되야 삭제된다.)
사용 예시)
-----------------출력---------------
==================BufferedReader==============
텍스트파일 내용을 읽어올때 사용되며 Reader로 사용할 수 있는 보조 스트림이다.
입력소스 -> BufferedReader -> 프로그램으로 구성되며
사용함으로써 외부에서 직접읽는것보다 성능이 향상된다.
주요 메소드
String .readLine()
- 지정된 파일의 내용을 한줄한줄 읽어오는것
예시)
data.txt 라는 파일에
김유신,3,80,50,40
이순신,1,20,50,70
강감찬,2,70,60,90 이라 적고 저장한 후에
예시2) csv파일로 할경우 편집으로 utf-8로 바꾼 후
심화 예시)
===============PrintWriter==================
주요 메소드
클래스명.println()
만들 파일의 한줄로 작성되며 자동 줄바꿈이 된다.
write라는 메소드도 있지만 자동 줄바꿈이 안된다.
클래스명.flush()
원래 작성 후 버퍼에 저장이 되고 버퍼가 다차면(8kb) 파일로 보내는데
flush()는 다안채워도 바로 보내게해서 저장하는것.(close를 해도 보내지지만 flush를 쓰자.)
클래스명.close()
작성 종료
예시)