반응형
File클래스
java.os 패키지는 파일과 디렉토리 정보를 가지고 있는 File 클래스를 제공함
객체 생성 방법
File file = new File("경로");
exists() 메소드
파일이나 폴더가 존재하는지 확인할 수 있음
File file = new File("경로");
Boolean isExist = file.exists();
length() 메소드
파일의 크기 리턴 (단위 byte)
File file = new File("경로");
long fileSize = file.length(); //파일크기 리턴 메소드
System.out.println("파일크기 : " + fileSize); // byte
System.out.println("파일크기 : " + fileSize/1024 + "KB"); // KB
System.out.println("파일크기 : " + fileSize/1024/1024 + "MB"); // MB
delete() 메소드
- 파일 삭제 메소드
- 휴지통으로 보내지지 않고 바로 삭제됨
File file = new File("경로");
Boolean isDelete = file.delete();
mkdir(), mkdirs() 메소드
- make directory 의 줄임말
- mkdir() → 경로중 마지막 경로만 (디렉토리 또는 파일) 존재하지 않을경우 그 이름으로 새로운 디렉토리를 생성해줌, 중간의 경로가 없을경우엔 새로운 디렉토리를 생성하지 않음
- mkdirs() → 경로에 없는 디렉토리를 모두 생성해줌
isDirectory()
디렉토리인지 여부 확인
File file = new File("경로");
Boolean isThisDirectory = file.isDirectory();
isFile()
파일인지 여부 확인
File file = new File("경로");
Boolean isThisFile = file.isFile();
입출력 스트림
자바는 입력 스트림과 출력 스트림을 통해 데이터를 입출력함
EOF(End of File)
데이터 소스로부터 더이상 읽을 수 있는 데이터가 없음을 나타냄
바이트 스트림
- 그림, 멀티미디어, 문자 등 모든 종류의 데이터를 입출력할 때 사용
- byte단위(1byte)로 입출력
- InputStream, OutputStream
FileInputStream
String fileName = "data.txt"; //절대경로 주지않으면 현재경로에서 찾음
FileInputStream fis = null; //try-catch문 사용으로 인해 외부에 선언해야함
try {
fis = new FileInputStream(fileName); //파일 가져오기
while(true) {
int data = fis.read(); //1byte 단위로 읽어옴(한글깨짐)
if (data == -1) { //EOF -1 리턴
break; //반복문 해제
}
System.out.printf("%c", data); //char로 출력했을 경우 -> 한글 깨져서 출력됨
}
} catch (Exception e) {
System.out.println(e);
} finally {
// 자원반납
try {
if (fis != null) {fis.close();}
} catch (Exception e) {}
}
문자 스트림
- 문자만 입출력할 때 사용
- char단위(2byte)로 입출력
- Reader, Writer
FileReader
String fileName = "data.txt"; //절대경로 주지않으면 현재경로에서 찾음
FileReader fr = null; //try-catch문 사용으로 인해 외부에 선언해야함
try {
fr = new FileReader(fileName); //파일 가져오기
while(true) {
int data = fr.read(); //2byte 단위로 읽어옴
if (data == -1) { //EOF -1 리턴
break; //반복문 해제
}
System.out.printf("%c", data); //char로 출력했을 경우 -> 한글 깨지지 않고 출력됨
}
} catch (Exception e) {
System.out.println(e);
} finally {
// 자원반납
try {
if (fr != null) {fr.close();}
} catch (Exception e) {}
보조 스트림
다른 스트림과 연결되어 여러가지 편리한 기능을 제공해주는 스트림
InputStreamReader : 바이트 스트림을 문자 스트림으로 변환
Buffered- : 입출력 성능 향상
Data- : 기본 타입 데이터 입출력
Print- : 줄바꿈 처리 및 형식화된 문자열 출력
Object- : 객체 입출력
BufferedReader
입력 성능 향상
엔터(\n)를 기준으로 한줄씩 읽어옴
String fileName = "data.txt"; //절대경로 주지않으면 현재경로에서 찾음
FileReader fr = null; //try-catch문 사용으로 인해 외부에 선언해야함
BufferedReader br = null; //try-catch문 사용으로 인해 외부에 선언해야함
try {
fr = new FileReader(fileName); //파일 가져오기
br = new BufferedReader(fr); //보조 스트림에 넣기
while(true) {
String line = br.readLine(); //엔터(\\n)를 기준으로 한줄씩 가져오기
if (line == null) { //EOF null 리턴
break; //반복문 해제
}
System.out.printf("%c", line);
}
} catch (Exception e) {
System.out.println("파일 읽기 실패 : " + e);
} finally {
// 자원반납
try {
if (br != null) {br.close();} //바깥 스트림부터 닫기
} catch (Exception e) {}
try {
if (fr != null) {fr.close();}
} catch (Exception e) {}
}
PrintWriter
줄바꿈 처리 및 형식화된 문자열 출력
String fileName = "d:/java202301/sungjuk.txt";
FileWriter fw = null;
PrintWriter out = null;
try {
// append true -> 추가, false -> 덮어쓰기
fw = new FileWriter(fileName, true);
//autoFlush true -> 버퍼를 청소하면서 사용
out = new PrintWriter(fw, true);
// oop0313.Test07_format.java참조
// System.out.println(); 콘솔창에 출력
// out.println(); 해당 파일에 출력
out.println("무궁화,95,90,100");
out.println("홍길동,100,100,100");
out.println("라일락,90,95,35");
out.println("개나리,85,70,75");
out.println("진달래,35,40,60");
System.out.println("sungjuk.txt 데이터 파일 완성");
} catch (Exception e) {
System.out.println("파일 쓰기 실패");
e.printStackTrace();
} finally {
// 자원반납
try {
if (out != null) {out.close();} //바깥 스트림부터 닫기
} catch (Exception e) {}
try {
if (fw != null) {out.close();}
} catch (Exception e) {}
}
반응형
'Back-End > Java' 카테고리의 다른 글
Java 과제 - 성적표 파일 입출력 (0) | 2023.03.23 |
---|---|
Java(8) (0) | 2023.03.22 |
Java(7) (0) | 2023.03.21 |
댓글