hyeonga_code
Java의 신2_Chapter 8_I/O 본문
2024.04.02
- I/O_Input/Output
-- 프로그램의 내용을 파일에 읽거나 저장할 경우
-- 프로그램의 내용을 다른 서버나 디바이스로 보내는 경우
-- java.io
---- 바이트 기반의 데이터를 처리하기 위해 여러 종류의 Stream 클래스를 제공
---- 바이트가 아닌 char 기반의 문자열로 되어 있는 파일은 Reader와 Writer 클래스로 처리
---- 스트림_Stream
------ 끊기지 않고 연속적인 데이터
-- NIO_New I/O
---- 스트림이 아닌 버퍼와 채널 기반으로 데이터를 처리
-- File & Files 클래스
---- 파일과 파일의 경로를 포함한다.
---- File 클래스는 정체가 불분명하고 심볼릭 링크와 같은 유닉스 계열의 파일에서 사용하는 몇몇 기능을 제대로 제공하지 못하므로 Files 클래스에서 대체하여 제공한다.
---- File 클래스는 객체를 생성하여 데이터를 처리한다.
---- Files 클래스는 static 메소드로 선언되어 별도의 객체를 생성할 필요가 없다.
- File Class
-- 생성자
File(File parent, String child)
// 이미 생성되어 있는 File 객체와 하위 경로 이름으로 새로운 File 객체를 생성
File(String pathname)
// 지정한 경로 이름으로 새로운 File 객체를 생성
File(String parent, String child)
// 상위 경로와 하위 경로로 File 객체를 생성
File(URI uri)
// URI에 따른 File 객체를 생성
---- URI_Uniform Resource Identifier
------ 어떠한 리소스를 가리키기 위한 경로
package e.io;
import java.io.File;
public class FileSample {
public static void main(String[] args) {
FileSample sample = new FileSample();
String pathName = "C:\\godofjava\\text";
sample.checkPath(pathName);
} //end main()
public void checkPath(String pathName) {
File file = new File(pathName);
if(file.existes()) { // 파일이 존재하는 경우 true
System.out.println(pathName + " is existes");
} else { // 파일이 존재하지 않는 경우 false
System.out.println(pathName + " is not existes");
}
} //end checkPath()
} //end class
---- OS마다 디렉터리 구분자가 다르므로 File 클래스의 separator를 사용하는 것이 가장 안전하다.
------ File.separator + "godofjava" + File.separator + "text"
---- mkdir() > 한 개의 파일 디렉터리를 생성한다.
---- mkdirs() > 여러 개의 파일 디렉터리를 생성한다.
isDirectory()
// 경로를 나타내는지 확인
isFile()
// 파일을 나타내는지 확인
isHidden()
// 숨긴 파일인지 확인
-- 새로운 파일 생성
.createNewFile()
-- 파일의 정보를 확인하는 메소드
getFileInfo()
---- File로 끝나는 경우 File 객체를 리턴한다.
---- 경로인 경우 String 타입으로 전체 경로를 리턴한다.
// 절대경로_Absolute
getAbsolutePath()
getAbsoluteFile()
// 절대적이고 유일한 경로_Canonical
getCanonicalPath()
getCanonicalFile()
-- 파일 이름을 제외한 경로만 조회
getParent()
-- 디렉터리에 있는 목록을 살펴보기 위한 list 메소드
static File[] listRoots()
// JVM이 수행되는 OS에서 사용중인 파일 시스템의 루트 디렉터리 목록을 File 배열로 리턴
String[] list()
// 현재 디렉터리의 하위에 있는 목록을 String 배열로 리턴
String[] list(FilenameFilter filter)
// 현재 디렉터리의 하위에 있는 목록 중, filter 조건에 맞는 목록을 String 배열로 리턴
File[] listFiles()
// 현재 디렉터리의 하위에 있는 목록을 File 배열로 리턴
File[] listFlies(FileFilter filter)
// 현재 디렉터리의 하위에 있는 목록 중 filter 조건에 맞는 목록을 File 배열로 리턴
File[] listFiles(FilenameFilter filter)
// 현재 디렉터리의 하위에 있는 목록 중 filter 조건에 맞는 목록을 File 배열로 리턴
---- FileFilter 인터페이스 메소드
boolean accept(File pathname)
// File 객체가 조건에 맞는지 확인
---- FilenameFilter 인터페이스 메소드
boolean accept(File dir, String name)
// 디렉터리에 있는 경로나 파일 이름이 조건에 맞는지 확인
- InputStream
public abstract class InputStream extends Object implements Closeable
-- Closeable
---- 해당 리소스는 close() 메소드를 사용하여 종료해야 한다.
-- 메소드
int available()
// 스트림에서 중단없이 읽을 수 있는 바이트의 개수를 리턴
void mark(int readlimit)
// 스트림의 현재 위치를 mark 해두고 표시해 둔 자리의 최대 유효 길이를 매개변수로 넘긴다.
// 값이 넘어가는 경우 표시한 자리는 의미가 없어진다.
void reset()
// 현재 위치를 mark() 메소드가 호출된 위치로 되돌린다.
boolean markSupported()
// mark()메소드나 reset() 메소드가 수행 가능한지 확인
abstract int read()
// 스트림에서 다음 바이트를 읽는다.
int read(byte[] b)
// 바이트 배열에 데이터를 담아 데이터의 개수를 리턴
int read(byte[] b, int off, int len)
// 바이트 배열에 off 부터 len 개수 만큼의 데이터를 담아 데이터의 개수를 리턴
long skip(long n)
// 매개 변수로 넘어온 길이 만큼의 데이터를 건너 뛴다.
void close()
// 스트림에서 작업 중인 대상을 해제
---- 주로 사용하는 스트림
FileInputStream
// 파일을 읽는 데 사용
// 바이트 코드로 된 데이터를 읽을 때 사용 (이미지)
FilterInputStream
// 다른 입력 스트림을 포괄 (InputStream 클래스가 Override)
ObjectInputStream
// ObjectOutputStream으로 저장한 데이터를 읽을 때 사용
- OutputStream
public abstract class OutputStream extends Object implements Closeable, Flushable
-- Flushable
---- 버퍼를 갖고 데이터를 저장하고 버퍼가 차게 되면 한 번에 쓰는데 flush() 메소드를 사용하여 현재 버퍼에 있는 내용을 기다리지 않고 무조건 저장하는 것
-- 메소드
void write(byte[] b)
// 바이트 배열을 저장
void write(byte[] b, int off, int len)
// 바이트 배열의 off 위치부터 len 만큼의 길이를 저장
abstract void write(int b)
// 매개변수로 받은 바이트를 저장
void flush()
// 버퍼에 쓰려고 대기하고 있는 데이터를 강제로 쓰도록 한다.
void close()
// 쓰기 위해 열은 스트림을 해제
'Java' 카테고리의 다른 글
Java의 신2_Chapter 7_Thread (0) | 2024.04.03 |
---|---|
Java의 신2_Chapter 6_Collection Map (0) | 2024.04.03 |
Java의 신2_Chapter 5_Collection Set Queue (0) | 2024.04.02 |
Java의 신2_Chapter 4_Collection List (0) | 2024.04.02 |
Java의 신2_Chapter 3_Generic (0) | 2024.04.02 |