오늘의 개발일지 2020년06월11일 Java 파일(File) 이동(Move) 시키기 예제(Example)

안녕하세요 가야태자(@talkit) 입니다. 오늘은 Java에서 파일을 이동 시키는 것에 대해서 알아보도록 하겠습니다.

참고 출처 : https://huskdoll.tistory.com/304

실제로, 제가 앞에서 작성한 프로그램을 분석을 끝냈습니다. 그런데 문제는 뒤에 저 파일에 대한 분석을 또해야 하는 문제가 발생을 했습니다. T.T

그래서 이번에는 로그에 Founded 를 넣어서 찾으면 그 풀 Path를 가지고 있게 만들었습니다.

저 URL의 예제는 파일을 이동 시키는 코드만 있습니다.

그런데, 제예제는 파일을 한줄씩 읽고, 읽을 파일을 분석해서 이동 시키는 에제 입니다.

우선 제가 원하는 파일을 제대로 이동 시키는지를 보기 위해서 출력만 하는 소스 입니다.

package kr.ymmedia.util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class SearchDEMMove {

    static List<File> targetFiles = null;

    static String baseFile = "/data01/ICECWRF/logs/SearchDEMLAT.log";    //분석할 로그 파일
    public static void main( String[] args ) throws Exception
    {

            BufferedReader br = null;

            // 분석할 로그파일을 읽음.
            br = new BufferedReader(new FileReader(new File(baseFile)));



            String line = "";

            //각 파일의 한 라인씩 읽어들인다.
            while((line = br.readLine()) != null) {

                //lins 을 " : " 구분해서 이동 시킬 파일 찾기

                String[] arrText= line.split(":");

                if(!arrText[0].trim().equals("Processing")) {

                    System.out.println("move file : " + arrText[2]);

                }

            }
            br.close();
        }

}

한번 돌려 보도록 하겠습니다.

잘돌아 갑니다.

그리고, 이제 실제로 이동하는 코드를 짜봤습니다.

package kr.ymmedia.util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class SearchDEMMove {

    static List<File> targetFiles = null;

    static String baseFile = "/data01/ICECWRF/logs/SearchDEMLAT.log";    //분석할 로그 파일
    static String targetFolder ="/data01/LIDAR/gj/result_process/";
    public static void main( String[] args ) throws Exception
    {

            BufferedReader br = null;

            // 분석할 로그파일을 읽음.
            br = new BufferedReader(new FileReader(new File(baseFile)));



            String line = "";

            // 날짜 형식을 String으로 혹은 String을 날짜 형식으로 변환하기 위한 포맷형식이다.
            DateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSSS");

             // Calendar형식에서 날짜를 가져온다. 특이점은 Calendar가 singleton 형식이다.
             // Date 값을 가져와서 String으로 변환한다.
             String datestr = format.format(Calendar.getInstance().getTime());
            // 혹시나 해서 현재 시간의 폴더를 만들어서 넣습니다. 


            File dir = new File(targetFolder + "/" + datestr  + "/");
            // 중복 방지를 위해서 폴더를 생성 합니다. 
            if (!dir.exists()) { //폴더 없으면 폴더 생성
                dir.mkdirs();
            }

            //각 파일의 한 라인씩 읽어들인다.
            while((line = br.readLine()) != null) {

                //lins 을 " : " 구분해서 이동 시킬 파일 찾기

                String[] arrText= line.split(":");

                if(!arrText[0].trim().equals("Processing")) {
                    System.out.println(line);
                    System.out.println("move file : " + arrText[2]);
                    // 분석된 파일을 File로 읽어 드립니다.  
                    try{
                    File file = new File(arrText[2].trim());
                    //기존 파일명만 가져옵니다. 
                    String targetFileName = file.getName();

                    System.out.println(targetFolder + "/" + datestr  + "/"  + targetFileName);

                    // 실제로 이동 시킨는 코드 입니다. 

                       if(file.renameTo(new File(targetFolder + "/" + datestr  + "/"  + targetFileName))){ //파일 이동
                            //return filePath; //성공시 성공 파일 경로 return
                        }else{
                            //return null;
                        }

                    }catch(Exception e){
                        e.printStackTrace();
                        // 파일이 없으면 오류를 뿌리기 while 문을 계속 합니다.
                        continue;
                    }



                }




            }
            br.close();
        }

}

그리고, 날짜 형식 관련 소스는 https://nowonbun.tistory.com/502 의 글을 참고 했습니다.

오늘은 여기 까지 입니다.

오늘도 즐거운 하루 되십시오.

감사합니다.

+ Recent posts