250x250
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- JDBC
- ubuntu
- MySQL
- jpa
- IntelliJ
- Tomcat
- Exception
- Source
- error
- Thymeleaf
- 설정
- maven
- spring
- STS
- Python
- Eclipse
- myBatis
- 오픈소스
- Open Source
- oracle
- Core Java
- PostgreSQL
- JavaScript
- Docker
- git
- Spring Boot
- MSSQL
- AJAX
- SpringBoot
- 문서
Archives
- Today
- Total
헤르메스 LIFE
[Core Java] File List 떨구는 샘플 본문
728x90
운영서버에 파일을 올리기 위해서 오늘일자의 수정된 파일 목록을 떨구고, 그 파일을 다른 곳에 copy 해서 관리하는 간단한 Source
기준시간으로 부터 변경된 Source파일을 찾는 프로그램
package com.java .text;
import java. io.BufferedReader ;
import java. io.BufferedWriter ;
import java. io.File ;
import java. io.FileInputStream ;
import java. io.FileOutputStream ;
import java. io.FileReader ;
import java. io.FileWriter ;
import java. io.IOException ;
import java. io.PrintWriter ;
import java. text.SimpleDateFormat ;
import java. util.Date ;
import org. apache.log4j .Logger;
public class RequestFileList {
private static final Logger logger = Logger.getLogger( RequestFileList.class. getName());
private static SimpleDateFormat format = new SimpleDateFormat ("yyyyMMddHHmmss");
private static SimpleDateFormat format2 = new SimpleDateFormat ("yyyyMMdd") ;
private static PrintWriter out = null ;
// 파일 변경 기준 시간.
private static String STD_TIME = "201511" + "15" + "080000"; // 년월 + 일 + 시간 + 을 고치면 됩니다.
// 프로젝트 HOME
private static String BASE_HOME = "C:/MyProject/workspace/project01" ;
// 수정된 파일 목록이 쌓이는 파일이이 생성되는 폴더위치
private static String LIST_DIR = "C:/temp/";
// 수정된 파일을 찾을 모듈명
private static String MODULE1 = "comm" ;
private static String MODULE2 = "utils" ;
private File modifyList ;
public RequestFileList () {
try {
modifyList = new File( LIST_DIR + "si_" + format.format (new Date()) + ".txt" );
out = new PrintWriter( new BufferedWriter (new FileWriter(modifyList )));
} catch (IOException ie) {
ie .printStackTrace() ;
}
}
public static void main( String args[] ) {
RequestFileList localToServer = new RequestFileList();
// 변경된 모듈별로,
// 파일에 목록을 작성한다.
try {
logger .info( "파일 찾기 시작 : " + format.format( System.currentTimeMillis())) ;
// 수정된 파일을 찾을 폴더
File srcDir = new File(BASE_HOME + "/WebRoot/" + MODULE1 );
localToServer .findFileDir( srcDir);
srcDir = new File( BASE_HOME + "/src/com/" + MODULE1);
localToServer .findFileDir( srcDir);
srcDir = new File( BASE_HOME + "/WebRoot/" + MODULE2);
localToServer .findFileDir( srcDir);
srcDir = new File( BASE_HOME + "/src/com/" + MODULE2);
localToServer .findFileDir( srcDir);
logger .info( "파일 찾기 종료 : " + format.format( System.currentTimeMillis())) ;
// System.out.println(localToServer.modifyList.getName());
} catch (Exception e) {
e .printStackTrace() ;
} finally {
try {
// File Flush & Close
out .flush() ;
out .close() ;
} catch (Exception e) {
e .printStackTrace() ;
}
}
System.out. println("---------------- 복사 시작 ------------------" );
try {
localToServer .copyFile() ;
} catch (Exception e) {
e .printStackTrace() ;
}
System.out. println("-------------- 복사 종료 --------------------" );
System.exit( -1) ;
}
/*
* 변경된 파일을 COPY 한다.
*/
public void copyFile() throws Exception {
// 파일복사 시작
FileInputStream fInS = null;
FileOutputStream fOutBackS = null;
File folder = null;
BufferedReader br = null;
String s = "";
String pathName = "";
try {
br = new BufferedReader( new FileReader (LIST_DIR + modifyList. getName()));
while (( s = br .readLine() ) != null ) {
pathName = s. replaceAll(BASE_HOME , "" );
//logger.info((LIST_DIR + format2.format(new Date()) + pathName).substring(0, (LIST_DIR + format2.format(new Date()) + pathName).lastIndexOf("/")));
folder = new File(( LIST_DIR + format2 .format( new Date ()) + pathName).substring (0, (LIST_DIR + format2. format(new Date()) + pathName).lastIndexOf ("/"))) ;
if(! folder.exists ()){
folder .mkdirs() ;
}
try {
fInS = new FileInputStream( s);
fOutBackS = new FileOutputStream( LIST_DIR + format2 .format( new Date()) + pathName) ;
byte[] buffer = new byte[ 1024];
while ( true) {
int count = fInS.read (buffer) ;
if ( count == -1) {
break;
}
fOutBackS .write( buffer, 0, count );
}
} catch (Exception e) {
e .printStackTrace() ;
} finally {
try {
if ( fInS != null) fInS .close() ;
if ( fOutBackS != null) fOutBackS .close() ;
} catch (Exception e) {
e .printStackTrace() ;
}
}
}
} catch (IOException ioe) {
throw ioe;
} finally {
if ( br != null) br .close() ;
}
}
/*
* 확장자 Return
*/
public String getFileExt( String fileName ) {
int pos = fileName.lastIndexOf (".") ;
return fileName. substring(pos + 1 );
}
/*
* 파일명 Return
*/
public String getFileName( String fileName ) {
int pos1 = fileName.lastIndexOf ("/") ;
int pos2 = fileName.lastIndexOf (".") ;
return fileName. substring(pos1 , pos2) ;
}
/*
* 파일명 경로 Return
*/
public String getFileName2( String fileName ) {
int pos1 = fileName.lastIndexOf ("/") ;
return fileName. substring(0 , pos1) ;
}
/*
* 변경된 모듈별 폴더를 검색한다.
*/
public void findFileDir( File srcDir ) throws Exception {
if ( !srcDir. exists()) {
logger .info( "file not found : " + srcDir .getCanonicalPath()) ;
System.exit( -1) ;
}
File files[] = srcDir .listFiles() ;
for ( int i = 0; i < files .length; i++) {
if ( files[i ].isDirectory ()) {
findFileDir (files[ i]);
} else {
findFile (files[ i]);
}
}
}
/*
* 변경된 모듈별 파일을 검색한다.
*/
public void findFile( File srcFile ) {
try {
if ( !srcFile. exists()) {
logger .info( "file not found : " + srcFile .getCanonicalPath()) ;
System.exit( -1) ;
}
// 기준시간
Date stdDate = format.parse (STD_TIME) ;
// 파일수정시간
Date fileDate = format.parse (format. format(srcFile .lastModified())) ;
String ext = getFileExt(srcFile .getName()) ;
// 기준시간 이후 생성된 파일
if (( stdDate.getTime () - fileDate.getTime () ) <= 0 && ( ext.equals( "jsp") || ext. equals("java" ) || ext.equals ("xml") )) {
out .print( srcFile.getCanonicalPath ().replaceAll ("\\\\", "/") + "\n" );
}
} catch (Exception e) {
e .printStackTrace() ;
} finally {
}
return;
}
}
728x90
'Core Java' 카테고리의 다른 글
[Open Source] MySql Password Encoder (0) | 2022.03.21 |
---|---|
[Source] Apache commons FTPClient Java example - Download files from server (0) | 2022.03.15 |
[Core Java] 외부명령 실행하기 (0) | 2021.03.23 |
[Core Java] QRCode 출력 (0) | 2021.03.23 |
[Core Java] HTML entity 코드 변환 (0) | 2021.03.23 |