[JAVA] 정리/파일(file)

파일(file) - 3. 폴더 조작하기(새폴더 만들기, 폴더명 수정, 이동하기, 폴더 삭제하기)

쎈코 2023. 2. 26. 15:59

1. 새폴더 만들기(dir.mkdir(), dir.mkdirs())

1-1. 폴더 하나만 만들 때 

String path = "C:\\class\\code\\java\\file\\aaa";
File dir = new File(path);

 

boolean result = dir.mkdir();

//하나만 만들때는 mkdir(make directory). 폴더 속 폴더를 만들거면 mkdirs
System.out.println(result);               //이미 만들었는데 또 같은이름으로 만들면 false뜸

 

1-2. 폴더 속 폴더를 만들 때
String path = "C:\\class\\code\\java\\file\\bbb\\ccc\\ddd";

//ddd라는 폴더를 만드는 것. ddd가 중요한게 아니라 bbb와 ccc폴더가 중요
File dir = new File(path);

boolean result = dir.mkdirs();           //mkdirs : 현재 경로(path)중에 없는 폴더가 있으면 한번에 다 만들어줌
System.out.println(result);

 

 

EX1 ) 요구사항] 회원 명단 > 개인 폴더 생성
String[] member = { "홍길동", "아무개", "하하하", "호호호", "유재석", "강호동", "조세호", "이이경" };

for(int i=0; i<member.length; i++) {
     //회원 1명당 1개의 폴더 생성
     String path = String.format("C:\\class\\code\\java\\file\\member\\[개인폴더]%s님", member[i]);
     File dir = new File(path);
     dir.mkdir(); //mkdirs도 가능하지만 속도가 느림
}
System.out.println("종료");

 

EX2 ) 요구사항] 날짜별 폴더 생성
- "2023-01-01" ~ "2023-12-31"  X  365개 생성

- C:\class\code\java\file\plan\2023-01-01

루프 + Calendar

Calendar c = Calendar.getInstance();             //우선 오늘 날짜를 불러와서
c.set(2023, 0, 1);                                             //2023-01-01로 세팅해줌

 

for(int i=0; i<365; i++) {                                   //폴더 생성을 365번 해줌

     //폴더를 넣을 경로: C:\class\code\java\file\plan\2023-01-01
     String path = "C:\\class\\code\\java\\file\\plan" + String.format("%tF\n", c);    //지정된 경로 내, Calendar c가 들어가게 함
     File dir = new File(path);                    
     dir.mkdir();                                                  //폴더 만들기
     c.add(Calendar.DATE, 1);                          //루프가 돌 때마다 날짜에 1씩 더해주기(자동으로 연, 월 바뀜)
}
System.out.println("종료");

 

2. 폴더명 수정 + 이동하기(dir1.renameTo(dir2))

- "member" 폴더명을 "회원" 폴더명으로 이름 변경 
 File dir1 = new File("C:\\class\\code\\java\\file\\member");
 File dir2 = new File("C:\\class\\code\\java\\file\\회원");

 

if(dir1.exists()) {
     dir1.renameTo(dir2);                        //폴더 내 내용물이 있어도 폴더명 수정에는 영향 없음
}
System.out.println("종료");

 

- "file" 폴더를 "move"폴더로 이동
File dir1 = new File("C:\\class\\code\\java\\file\\회원");
File dir2 = new File("C:\\class\\code\\java\\move\\회원");

if(dir1.exists()) {
     dir1.renameTo(dir2);                         //dir1(file폴더)에 있는 파일들(회원)이 dir2(move폴더)로 이동
}
System.out.println("종료");

 

 

3. 폴더 삭제하기(dir1.delete())

※ 빈 폴더만 삭제 가능!
File dir1 = new File("C:\\class\\code\\java\\file\\bbb");         //bbb폴더 내에 파일들이 있으면 에러남


if(dir1.exists()) {
     boolean result = dir1.delete();
     System.out.println(result);
}
System.out.println("종료");

 

4. 폴더 속 내용 보기

String path = "C:\\class\\dev\\eclipse";
File dir = new File(path);

if(dir.exists()) {
     File[] list = dir.listFiles();                    //폴더 배열 list 생성
     for(File file : list) {                              // File 클래스 file은 list 배열안에 있는걸 루프

          System.out.println(file.getName());     //path안에 있는 파일들 이름
          System.out.println(file.isFile());           //path안에 있는 파일들 이름
          System.out.println(file.isDirectory());  //path안에 있는 파일들 이름
          System.out.println();                           //path안에 있는 파일들 이름

     }
     for(File file : list) {
          if(file.isDirectory()) {                           //폴더 목록 가져오기

          System.out.printf("[%s]\n", file.getName());
          }
     }
     for(File file : list) {
          if(file.isFile()) {                                   //파일 목록 가져오기
          System.out.printf(file.getName());
          }
     }
}