어제 오늘 내일

[Java] 파일 최종수정일자 변경하기 본문

IT/Java

[Java] 파일 최종수정일자 변경하기

hi.anna 2021. 6. 5. 23:09

 

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

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

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

[Java] 파일에 텍스트 쓰기

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

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

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

[Java] 디렉토리 생성하기

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

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

 

 

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

  1. java.nio.file.Files
    • 현재 날짜로
    • 특정 날짜로
  2. java.io.File
    • 현재 날짜로
    • 특정 날짜로

 

 

1. java.nio.file.Files

public static Path setLastModifiedTime(Path path, FileTime time)

 

  현재날짜, 특정 날짜로 변경하기  

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.text.ParseException;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;

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

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

        try {
            // 0. 최종 수정일자
            System.out.println("최종수정일자(date) : " + Files.getLastModifiedTime(path));


            // 1. 파일 최종수정일자를 현재 시간으로 변경
            // 1.1 파라미터 준비
            FileTime currentTime = FileTime.fromMillis(System.currentTimeMillis());
            // FileTime currentTime = FileTime.from(Instant.now());
            // FileTime currentTime = FileTime.from(System.currentTimeMillis();
            // TimeUnit.MILLISECONDS);

            // 1.2 수정
            Files.setLastModifiedTime(path, currentTime);

            // 1.3 결과 출력
            System.out.println("최종수정일자(현재일자) : " + Files.getLastModifiedTime(path));


            // 2. 파일 최종수정일자를 특정 시간으로 변경
            // 2.1 파라미터 준비
            LocalDateTime date = LocalDateTime.of(2021, 5, 5, 11, 11);
            Instant instant = date.atZone(ZoneId.systemDefault()).toInstant();
            FileTime time = FileTime.from(instant);

            // 2.2 수정
            Files.setLastModifiedTime(path, time);

            // 2.3 결과 출력
            System.out.println("최종수정일자(현재일자) : " + Files.getLastModifiedTime(path));

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

    }
}

  결과  

최종수정일자(date) : Sat Jun 05 20:55:32 KST 2021
최종수정일자(현재일자) : Sat Jun 05 23:31:52 KST 2021
최종수정일자(특정시간) : Wed May 05 11:11:11 KST 2021

 

Files.setLastModifiedTime() 메소드를 이용해서, 파일의 최종수정시간을 변경해 주는 예제입니다.

 

FileTime currentTime = FileTime.fromMillis(System.currentTimeMillis());
FileTime currentTime = FileTime.from(Instant.now());
FileTime currentTime = FileTime.from(System.currentTimeMillis();

2번째 파라미터인 FileTime에 시간을 지정해주기 위해서,

FileTime.from(), FileTime.fromMillis() 메소드를 사용하였습니다.

 

LocalDateTime date = LocalDateTime.of(2021, 5, 5, 11, 11);
Instant instant = date.atZone(ZoneId.systemDefault()).toInstant();

FileTime.from()의 파라미터로 Instant 객체를 전달하기 위해서

LocalDateTime 객체를 System의 타임존을 이용하여 Instant 객체로 변환하였습니다.

 

 

 

2. java.io.File

public boolean setLastModified(long time)

java.io.File 클래스의 setLastModified() 메소드는 

시간을 지정하기 위해 파라미터로 millisecond를 입력받습니다.

 

  현재날짜, 특정 날짜로 변경하기  

import java.io.File;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

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

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

        // 0. 최종 수정일자
        System.out.println("최종수정일자(date) : " + new Date(file.lastModified()));
        

        // 1. 파일 최종수정일자를 현재 시간으로 변경
        file.setLastModified(System.currentTimeMillis());
        System.out.println("최종수정일자(현재일자) : " + new Date(file.lastModified()));
        

        // 2. 파일 최종수정일자를 특정 시간으로 변경
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = dateFormat.parse("2021-05-05 11:11:11");

        file.setLastModified(date.getTime());

        System.out.println("최종수정일자(특정시간) : " + new Date(file.lastModified()));
        
    }
}

  결과  

최종수정일자(date) : Sat Jun 05 20:55:32 KST 2021
최종수정일자(현재일자) : Sat Jun 05 23:31:52 KST 2021
최종수정일자(특정시간) : Wed May 05 11:11:11 KST 2021

 


 

java.nio.file.Files, java.io.File 클래스를 이용하여

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

 

 

반응형
Comments