java.io
- 생성 방법
- new File(경로, 파일)
- new File(파일)
- 경로 구분 방법
- Windows : 백슬래시
\
- Linux : 슬래시
/
File.mkdir()
: 만들려는 디렉토리의 상위 디렉토리가 존재하지 않을 경우생성 불가
File.mkdirs()
: 만들려는 디렉토리의 상위 디렉토리가 존재하지 않을 경우상위 디렉토리까지 생성
delete()
// 폴더(디렉터리) 만들기
File dir = new File("C:\\storage");
// 존재하지 않으면 만들겠다.
if(dir.exists() == false) { // if(!dir.exists())
dir.mkdirs();
}
// 존재하면 삭제하겠다.
else {
dir.delete(); // 지금 지운다.
//dir.deleteOnExit(); // JVM이 종료되면 지운다.
}
폴더와 파일 생성에는 IOException이 있을 수 있으니 try-catch문을 넣거나 throws문을 넣어 예외처리를 해 주는 것이 좋다.
File file = new File("C:\\storage", "my.txt");
try {
if(file.exists() == false) {
file.createNewFile();
}
else {
file.delete();
}
} catch(IOException e) {
// 개발할 때 넣는 catch 블록 코드
e.printStackTrace(); // 에러를 콘솔에 찍어라.
}
getName()
: 파일명을 가져온다.getParent()
: 자신이 가진 상위폴더(경로)를 가져온다.isDirectory()
: 폴더(디렉토리) 여부를 true와 false로 반환한다.isFile()
: 파일 여부를 true와 false로 반환한다.
File 관련 메소드 예제
File file = new File("C:\\storage", "my.txt");
System.out.println("파일명 : " + file.getName());
System.out.println("경로 : " + file.getParent());
System.out.println("전체경로(경로 + 파일명) : " + file.getPath());
System.out.println("디렉터리인가? " + file.isDirectory());
System.out.println("파일인가? " + file.isFile());
long lastModifiedDate = file.lastModified();
System.out.println("수정한 날짜 : " + lastModifiedDate);
String lastModified = new SimpleDateFormat("a hh:mm yyyy-MM-dd").format(lastModifiedDate);
System.out.println("수정한 날짜 : " + lastModified);
// 수정한 날짜 : 오전 09:50 2022-08-10
long size = file.length(); // 바이트 단위
System.out.println("파일크기 : " + size + "byte");
// 영문은 1byte , 한글은 2byte
디렉터리 내부의 모든 파일/디렉터리를 File 객체로 가져오기
File dir = new File("C:\\GDJ");
File[] list = dir.listFiles();
for(int i = 0; i < list.length; i++) {
System.out.println(list[i].getName());
}
파일 최근 수정된 날짜 출력하기
DecimalFormat()
: 숫자에 패턴을 지정해 줄 수 있다. File dir = new File("C:\\GDJ");
File[] list = dir.listFiles();
int dirCnt = 0;
int fileCnt = 0;
long totalSize = 0;
for(File file : list) {
if(file.isHidden()) {
continue;
}
String lastModified = new SimpleDateFormat("yyyy-MM-dd a hh:mm").format(file.lastModified());
String directory = "";
String size ="";
if(file.isDirectory()) {
directory = "<DIR>";
size = " ";
dirCnt++;
} else if(file.isFile()) {
directory = " ";
size = new DecimalFormat("#,##0").format(file.length()) + "";
fileCnt++;
totalSize += Long.parseLong(size.replace(",", ""));
}
String name = file.getName();
System.out.println(lastModified + " " + directory + " " + size + " " + name);
}
System.out.println(dirCnt + "개 디렉터리");
System.out.println(fileCnt + "개 파일 " + new DecimalFormat("#,##0").format(totalSize) + "바이트");
Windows는 백슬래시
\
를 사용하여 경로 구분, Linux는 슬래시/
를 사용하여 경로 구분을 한다.
운영체제마다 자동으로 경로 구분자를 바꿔주는 도구가 있다.
separator
플랫폼마다 다른 경로 구분자 지원
File file = new File("C:" + File.separator + "storage" + File.separator + "my.txt");
System.out.println(file.getName());
C:\storage 디렉터리 삭제하기
디렉터리가 비어 있어야 삭제할 수 있으므로 내부 파일을 먼저 삭제
String sep = File.separator;
File file = new File("C:" + sep + "storage", "my.txt");
if(file.exists()) {
file.delete();
}
File dir = new File("C:" + sep + "storage");
if(dir.exists()) {
dir.delete();
}