어제 오늘 내일

[Java] 파일의 최종 수정일자 조회 본문

IT/Java

[Java] 파일의 최종 수정일자 조회

hi.anna 2021. 6. 5. 21:59

 

Java API를 이용하여, 파일을 다루는 방법을 알아보고 있습니다.

[Java] 텍스트 파일 읽기 ( FileReader, BufferedReader, Scanner, Files )

[Java] 파일 생성하는 3가지 방법 (File, FileOutputStream, Files)

[Java] 파일, 디렉토리 존재 여부 확인하기

[Java] 파일에 텍스트 쓰기

[Java] 파일, 디렉토리 삭제하기

[Java] 현재 디렉토리 가져오기

[Java] 파일 사이즈 구하는 3가지 방법

[Java] 디렉토리 생성하기

[Java] 파일 또는 디렉토리 생성일자 구하기

 

 

이번에는, 파일의 최종 수정일자를 조회하고, 변경하는 방법을 소개합니다.

  1. java.nio.file.Files의 attribute 읽기
  2. java.nio.file.Files.getLastModifiedTime()
  3. java.io.File의 lastModified()

 

 

1. java.nio.file.Files의 attribute 읽기

파일의 최종 수정일자는 java.nio.files.Files 클래스의 attribute를 읽어서 구할 수 있습니다.

파일의 attribute를 읽는 방법은

이전의 포스팅인 '파일 또는 디렉토리 생성일자 구하기' 포스팅을 참조하세요.

 

  예제 1. Files.getAttribute()  

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.FileTime;

public class GetModifyDate {
    public static void main(String[] args) {

        Path file = Paths.get("d:\\example\\text_file.txt");

        try {
            // 파일 생성일자/수정일자 찾기
            FileTime creationTime = (FileTime) Files.getAttribute(file, "creationTime");
            FileTime lastModifiedTime = (FileTime) Files.getAttribute(file, "lastModifiedTime");

            // 결과 출력
            System.out.println("최초생성일자 : " + creationTime);
            System.out.println("최종수정일자 : " + lastModifiedTime);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

  예제 2. Files.readAttributes()  

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.FileTime;
import java.util.Map;

public class GetModifyDate {
    public static void main(String[] args) {
        Path file = Paths.get("d:\\example\\text_file.txt");

        try {

            // 파일 속성 찾기
            Map<String, Object> attributes = Files.readAttributes(file, "*");

            FileTime creationTime = (FileTime) attributes.get("creationTime");
            FileTime lastModifiedTime = (FileTime) attributes.get("lastModifiedTime");

            // 결과 출력
            System.out.println("생성시간 : " + creationTime);
            System.out.println("최종변경시간 : " + lastModifiedTime);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

  예제 3. Files.readAttributes()  

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.FileTime;

public class GetModifyDate {
    public static void main(String[] args) {

        Path file = Paths.get("d:\\example\\text_file.txt");

        try {
            // 파일 생성일자/수정일자 찾기
            BasicFileAttributes basicFileAttributes 
                    = Files.readAttributes(file, BasicFileAttributes.class);
                
            FileTime creationTime = basicFileAttributes.creationTime();
            FileTime lastModifiedTime = basicFileAttributes.lastModifiedTime();


            // 결과 출력
            System.out.println("최초생성일자 : " + creationTime);
            System.out.println("최종수정일자 : " + lastModifiedTime);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

 

 

2. java.nio.file.Files.getLastModifiedTime()

public static FileTime getLastModifiedTime(Path path, LinkOption... options)

Files 클래스는 간단하게 최종 수정일자를 가져올 수 있는 메소드를 제공합니다.

 

  파라미터  

  • path
    • file path
  • options
    • symbolic link를 처리하는 방법.
    • default : 아무것도 입력하지 않으면 default로 link의 최종 target 파일의 속성값을 읽습니다.
    • NOFOLLOW_LINKS : symbolic link의 target 속성이 아닌, symbolic link의 속성을 읽습니다.

 

  예제  

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.FileTime;

public class GetModifyDate {
    public static void main(String[] args) {

        Path file = Paths.get("d:\\example\\text_file.txt");

        try {
            // 파일 수정일자 찾기
            FileTime lastModifiedTime = Files.getLastModifiedTime(file);
            
            // 결과 출력
            System.out.println("최종수정일자 : " + lastModifiedTime);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

 

 

3. java.io.File의 lastModified()

public long lastModified()

File 클래스의 lastModified() 메소드를 이용하면,

파일의 최종 수정일자를 long 타입(밀리세컨드)으로 얻을 수 있습니다.

 

  예제  

import java.io.File;
import java.util.Date;

public class GetModifyDate {
    public static void main(String[] args) {

        File file = new File("d:\\example\\text_file.txt");

        // 파일 수정일자 찾기
        long lastModifiedTime = file.lastModified();

        // 결과 출력
        System.out.println("최종수정일자(ms) : " + lastModifiedTime);  // 1622894132032
        System.out.println("최종수정일자(date) : " + new Date(lastModifiedTime));  // Sat Jun 05 20:55:32 KST 2021
    }
}

new Date(lastModifiedTime);

File 클래스의 lastModified() 메소드는 밀리초 단위의 long 타입을 리턴합니다.

따라서, 밀리초를 날짜로 변환해주기 위해서 Date 클래스를 사용하였습니다.

 

 


 

 

파일의 최종 수정일자를 구하는 방법을 알아보았습니다.

 

 

 

반응형
Comments