해보자

[Java] 디렉토리 조회 기능 구현하기 본문

Java

[Java] 디렉토리 조회 기능 구현하기

안댕 2020. 7. 22. 17:34

 

ls명령어

 

ls 명령을 실행하면 현재 디렉토리에 있는 파일 목록을 출력한다.

 

 

소스코드

1
2
3
4
5
6
7
8
9
10
11
12
import java.io.File;
 
public class DirectoryList {
    public static void main(String[] args) {
        // 1. ls명령어
        String path = System.getProperty("user.dir") ;    // 현재 프로젝트 파일 디렉토리 경로
        File file = new File(path);
        String[] strs =  file.list();
        for(String str : strs)
            System.out.println(str); 
    }
}
cs

 

결과 : 

 


ls -F 명령어

 

F 옵션은 지시 문자를 추가로 표시한다.

- 디렉토리명이면 끝에 "/"를 표시하고 파일이면 "*"를 표시하도록 구현

 

 

소스코드

1
2
3
4
5
6
7
8
9
10
11
12
public class TestShellCommand {
    public static void main(String[] args) {
        // 2. ls -F, 폴더 명 뒤에는 "/" 표시
        String path = System.getProperty("user.dir");    // 현재 프로젝트 파일 디렉토리 경로
        File file = new File(path);
        String[] strs =  file.list();
        for(String str : strs) {
            String separator = new File(path + "\\" + str).isDirectory() ? "/" : "*";
            System.out.println(str + separator);
        }    
    }
}
cs

 

결과 : 


ls -l 명령어

파일의 모드, 링크 수, 소유자, 그룹, 크기(바이트), 최종 수정 시간, 파일명 표시

 

소스 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
 
public class TestShellCommand {
 
    public static void main(String[] args) {
        // 3. ls -l, 권한, 
 
        String dirPath = System.getProperty("user.dir");    // 현재 프로젝트 파일 디렉토리 경로
        String[] strs =  new File(dirPath).list();
        for(String str : strs) {            
            String filePath = dirPath + "\\" + str;
            File file = new File(filePath);
            // permission
            String fileInfo = ""
            String isFolder = file.isDirectory() ? "d" : "-";
            String perRead = file.canRead() ? "r" : "*";
            String perWrite = file.canWrite() ? "w" : "*";
            String perExecute = file.canExecute() ? "x" : "*";
            // size
            long size = isFolder.equals("d") ? 512 : file.length();
            /* if ( isFolder.equals("d")) {
                try {
                Path folderPath = Paths.get(filePath);
                
                size = Files.walk(folderPath)
                          .filter(p -> p.toFile().isFile())
                          .mapToLong(p -> p.toFile().length())
                          .sum();
                } catch(IOException e) {
                    
                }
            }
            else         
                size = file.length();
            */
            // owner
            String owner = "";
            Path pt = Paths.get(filePath);
            try {
                owner = Files.getOwner(file.toPath()).getName();
            } catch ( UnsupportedOperationException | IOException ex) {
                
            }
            // last modified time
            SimpleDateFormat df = new SimpleDateFormat("MM-dd hh:mm", Locale.KOREA);
            String lastModifiedTime  = df.format(new Date());
            try {
                lastModifiedTime = df.format(new Date(Files.getLastModifiedTime(file.toPath()).toMillis()));
            } catch(IOException ex) {
                
            }
            
            fileInfo = isFolder + perRead + perWrite + perExecute + " " // 파일 모드
                    + owner + " " + size + " " + lastModifiedTime + " ";  
            
            System.out.println(fileInfo + str);
        }
    }
}
cs

결과 

'Java' 카테고리의 다른 글

[Java] Data Structure | Deque  (0) 2020.09.08
[Java] Java8 API의 default 메소드, static 메소드  (0) 2020.09.07
[Java ] Appending ObjectOutputStream  (0) 2020.06.22