p.342

- I/O, 디렉터리에 있는 목록을 살펴보기 위한 list method

 * listRoots : JVM이 수행되는 oS에서 사용중인 파일시스템 루트 디렉토리 목록을 File배열로 리턴

 * list : 현재 디렉터리 하위 목록을 String 배열로 리턴

 * listFiles :  현재 디렉터리 하위 목록을 File 배열로 리턴.


-FileFilter

 * accpet:  매개변수로 넘어온 File 객체가 조건에 맞는지 확인


-FilenameFilter

 * accept :  매개변수로 넘어온 디렉터리에 있는 디렉터리나 파일이름이 조건에 맞는지 확인.


*p.344


 String fileName = file.getName();


if(fileName.endWith(".png")) return true;;


JDK 1.7이상이면 java.nio.file 패키지 사용해야할듯..(↑↑ 옛날..방식 인가봐)


*p.348

- InputStream method

 *avaliable : 스트림에서 중단없이 읽을 수 있는 바이트의 개수 리턴

 *mark(int readlimit) :  스트림의 현재 위치 표시(mark), 여기서 매개 변수로 넘긴 int 값은 표시해둔 자리의 최대 유효 길이.

                         이값을 넘어가면 표시해둔 자리는 더 이상 의미가 없어진다.


 *reset : 현재 위치를 mark() 메소드가 호출되었던 위치로 되돌린다.

 *markSupported : mark나 reset메소드가 수행 가능한지를 확인

 *read : 스트림에서 다음 바이트를 읽는다. 이 클래스에 선언도니 유일한 abstract 메소드(중요!!!)

 *read(byte[] b) : 매개변수로 넘어온 바이트 배열에 데이터를 담는다. 리턴 값은 데이터를 담은 개수(중요!!)

 *read(byte[] b, int off, int len) : 매개변수로 넘어온 바이트 배열에 특정위치(off)부터 지정한 길이(len) 만큼의 데이터를 담는다. 리턴 값은 데이터를 담은 개수(중요!)

 * skip : 매개변수로 넘어온 길이(n) 만큼의 데이터를 건너 뛴다.

 * close : 스트림에서 작업중인 대상을 해제한다. 이 메소드를 수행한 이후에는 다른 메소드를 사용하여 데이터를 처리할수 없다(중요!!)

*** 데이터를 읽을시에는 read() 사용하고 해당 리소스를 닫을시 close() 사용

*** close()안하면 에러 발생하니 주의할것!!


 p.350 

 - Stream의 종류

* FileInputStream : 파일을 읽는 데 사용, 주로 이미지파일의 바이트코드로된 데이터 읽을때 사용

* FilterInputStream :  다른입력 스트림을 포괄하며, 단순히 InputStream 클래스가 Override되어 있음.

* ObjectInputStream : ObjectOutputStream으로 저장한 데이터를 읽는데 사용.


-OutputStream method

 *write (byte b):  매개변수로 받은 바이트 배열 저장

 *write[byte[] b, int off, int len): 매개변수로 받은 바이트 배열의 특정위치부터 지정한 길이만큼 저장

 *write(int b) : 매개변수로 받은 바이트 저장, 타입은int이나 저장은 byte로 저장.

 *flush: 버퍼에 쓰려고 대기하고 있는 데이터를 강제로 사용

 *close: 쓰기 위해 열은 스트림 해제.



p.355 

 -FileWriter

  *FileWriter : File객체를 매개변수로 받아 객체를 생성

  *FileWriter(File file, boolean append ): File객체를 매개변수로 받아 객체 생성, 

   append값을 통하여 해당 파일의 뒤에 붙일지(append=true) 해당 파일 덮어 쓸지(aapend=false)를 정함.


p.358

 - FileWriter 객체 생성시 IOEXcepction 일반적 발생상황

   * 매개변수로 넘어온 파일 이름이 파일이 아닌 경로를 의미할 경우

   * 해당 파일이 존재하지는 않지만, 권한 등의 문제로 생성할 수가 없는 경우

   * 파일이 존재하지만, 여러가지 이유로 파일을 열 수가 없는 경우.



p.372

- Serializable

 * 작업한 클래스가 파일에 읽거나 쓸수 있도록 다른서버로 보내거나 받을수 있도록 하기위해서는 Serializable 인터페이스를 구현해야함.

 * 구현하면 JVM이 해당 객체를 저장허간 다른 서버로 전송.

 * DTO 생성시 implement Serializable 필요..

    (p.376 모든 DTO 생성시 필요한건지.. 설명이 조금 부족.. 아님 선언할때 Serializable관련 부분이 되어있거나)

 error!! -> java.io.NotserializableException 에러시 implements Serializable 해주도록!!



p.380

 static final long SerialVersion UID =1L;  <-- DTO 클래스 값을 변경할때 

 object, value 둘다 에러표시를 막아줌. !! 변경시 null 또는 변경된 값으로 치환되어 나옴. 다만 이리하면 로직이 꼬이거나 데이터가 잘못들어갔을경우 찾기가 어려우니 추천X)

 변경될일이 있다면 SerialVersion UID값을 변경하여 사용하자.


p.382 transient 예약어 : 해당 예약어 사용시 선언한 변수는 Serializable 대상에서 제외. 해당객체 무시

ex) transient private int 변수명;

 why?(언제사용하는가.?)

  - 보안상 중요한 변수나 꼭 저장해야할 필요가 없는 변수일때 사용..

 




p.385 NIO의 Buffer class

 - capacity: 버퍼에 담을수 있는 크기 리턴 (qjvjzmrl)

 - limit : 버퍼에서 읽거나 쓸 수 없는 첫 위치 리턴

 - position : 현재 버퍼의 위치 리턴.


상관관계 : 0 <= mark<=position <= limit <=크기(capacity)


Buffer type

 *flip: lmit값을 현재 position으로 지정한 후 postion을 0(가장앞)으로 이동

 *mark: 현재 postion을 mark

 *reset: 버퍼의 postion을 mark 한 곳으로 이동

 *rewind: 현재버퍼의 postion을0으로 이동

 *remaining : limit-position 계산 결과를 리턴

 *hasRemaining : postion과 limit 값에 차이가 있을 경우 true 리턴

 *clear: 버퍼를 지우고 현재 position을 0으로 이동, limit값을 버퍼의 크기로 변경.
















+ Recent posts