파일 관련 작업을 하나의 클래스에서 처리하고 각 작업자 별로 해당 메소드를 사용하는 방식으로
통일하기 위해서 작업중인 io관련 소스 입니다.
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.log4j.Logger;
public class FileIOUtil {
private Logger log = Logger.getLogger(this.getClass());
private String fileIoMessage;
/**
* 파일 경로를 전달 받아서 파일을 복사하는 메소드
* @param String srcFilePath 복사할 대상 파일 경로
* @param String destFilePath 복사될 파일 경로
* @return boolean 작업의 성공 여부
* */
public boolean fileCopy(String srcFilePath, String destFilePath){
boolean isSuccess = true;
File srcFile = new File(this.setFilePathReplaceAll(srcFilePath));
File destFile = new File(this.setFilePathReplaceAll(destFilePath));
try {
FileUtils.copyFile(srcFile, destFile);
} catch (IOException e) {
isSuccess = false;
log.error(e);
System.out.println("FileIOUtil > fileCopy(String srcFilePath, String destFilePath) IOException happen");
fileIoMessage = "작업중 에러가 발생 되었습니다.";
}
return isSuccess;
}
/**
* 파일을 전달 받아서 파일을 복사하는 메소드
* @param File srcFile 복사할 대상 파일
* @param File destFile 복사될 파일
* @return boolean 작업의 성공 여부
* */
public boolean fileCopy(File srcFile, File destFile){
boolean isSuccess = true;
try {
FileUtils.copyFile(srcFile, destFile);
} catch (IOException e) {
isSuccess = false;
log.error(e);
System.out.println("FileIOUtil > fileCopy(String srcFilePath, String destFilePath) IOException happen");
fileIoMessage = "작업중 에러가 발생 되었습니다.";
}
return isSuccess;
}
/**
* destFilePath 경로에 해당하는 파일에 createContent내용을 등록하는 메소드 입니다.
* fileAppend 은 이어쓰기 할지 여부를 지정하는 것으로 이어쓰기 하는경우 true를 덮어 쓰기 하고자 하는경우
* false를 입력 하면 됩니다. fileEncoding 값은 입력 하지 않아도 됩니다.
* @param String destFilePath 글을 등록할 파일 경로
* @param Stirng createContent 등록할 글 내용
* @param boolean fileAppend 파일에 글 등록시 이어붙이기 할지 덮어쓰기 할지 결정(ex>true 이어쓰기,false 덮어쓰기)
* @param String fileEncoding 글등록시 인코딩 값을 정의(ex> euc-kr, utf-8)
* @return boolean 작업의 성공 여부
* */
public boolean writingToaFile(String destFilePath, String createContent, boolean fileAppend, String fileEncoding){
boolean isSuccess = true;
File destFile = new File(this.setFilePathReplaceAll(destFilePath));
try {
if(fileAppend){
if(fileEncoding!=null && !"".equals(fileEncoding)){
FileUtils.writeStringToFile(destFile, createContent, fileEncoding, fileAppend);
}else{
FileUtils.writeStringToFile(destFile, createContent, fileAppend);
}
}else{
if(fileEncoding!=null && !"".equals(fileEncoding)){
FileUtils.writeStringToFile(destFile, createContent, fileEncoding);
}else{
FileUtils.writeStringToFile(destFile, createContent);
}
}
} catch (IOException e) {
isSuccess = false;
log.error(e);
System.out.println("FileIOUtil > writingToaFile(String destFilePath, String createContent) IOException happen");
fileIoMessage = "작업중 에러가 발생 되었습니다.";
}
return isSuccess;
}
/**
* destFile 파일에 createContent내용을 등록하는 메소드 입니다.
* fileAppend 은 이어쓰기 할지 여부를 지정하는 것으로 이어쓰기 하는경우 true를 덮어 쓰기 하고자 하는경우
* false를 입력 하면 됩니다. fileEncoding 값은 입력 하지 않아도 됩니다.
* @param File destFile 글을 등록할 파일
* @param Stirng createContent 등록할 글 내용
* @param boolean fileAppend 파일에 글 등록시 이어붙이기 할지 덮어쓰기 할지 결정(ex>true 이어쓰기,false 덮어쓰기)
* @param String fileEncoding 글등록시 인코딩 값을 정의(ex> euc-kr, utf-8)
* @return boolean 작업의 성공 여부
* */
public boolean writingToaFile(File destFile, String createContent, boolean fileAppend, String fileEncoding){
boolean isSuccess = true;
try {
if(fileAppend){
if(fileEncoding!=null && !"".equals(fileEncoding)){
FileUtils.writeStringToFile(destFile, createContent, fileEncoding, fileAppend);
}else{
FileUtils.writeStringToFile(destFile, createContent, fileAppend);
}
}else{
if(fileEncoding!=null && !"".equals(fileEncoding)){
FileUtils.writeStringToFile(destFile, createContent, fileEncoding);
}else{
FileUtils.writeStringToFile(destFile, createContent);
}
}
} catch (IOException e) {
isSuccess = false;
log.error(e);
System.out.println("FileIOUtil > writingToaFile(File destFile, String createContent) IOException happen");
fileIoMessage = "작업중 에러가 발생 되었습니다.";
}
return isSuccess;
}
/**
* srcFilePath 경로에 해당하는 파일의 내용을 읽어오는 메소드 입니다.
* fileEncoding 값은 정의하지 않아도 됩니다.
* @param String srcFilePath 읽어올 파일 경로
* @param String fileEncoding 파일 인코딩 종류(ex>euc-kr, utf-8)
* @return String 파일의 내용
* */
public String readTheFile(String srcFilePath, String fileEncoding){
String fileContent = "";
File srcFile = new File(this.setFilePathReplaceAll(srcFilePath));
try {
if(fileEncoding!=null && !"".equals(fileEncoding)){
fileContent = FileUtils.readFileToString(srcFile, fileEncoding);
}else{
fileContent = FileUtils.readFileToString(srcFile);
}
} catch (IOException e) {
log.error(e);
System.out.println("FileIOUtil > readTheFile(String srcFilePath, String fileEncoding) IOException happen");
fileIoMessage = "작업중 에러가 발생 되었습니다.";
}
return fileContent;
}
/**
* srcFile 파일의 내용을 읽어오는 메소드 입니다.
* fileEncoding 값은 정의하지 않아도 됩니다.
* @param File srcFile 읽어올 파일
* @param String fileEncoding 파일 인코딩 종류(ex>euc-kr, utf-8)
* @return String 파일의 내용
* */
public String readTheFile(File srcFile, String fileEncoding){
String fileContent = "";
try {
if(fileEncoding!=null && !"".equals(fileEncoding)){
fileContent = FileUtils.readFileToString(srcFile, fileEncoding);
}else{
fileContent = FileUtils.readFileToString(srcFile);
}
} catch (IOException e) {
log.error(e);
System.out.println("FileIOUtil > readTheFile(File srcFile, String fileEncoding) IOException happen");
fileIoMessage = "작업중 에러가 발생 되었습니다.";
}
return fileContent;
}
/**
* folderPath 경로에 해당하는 폴더를 생성하는 메소드
* @param String folderPath 생성할 폴더 경로
* @param boolean isRecursive 폴더를 생성할때 상위 디렉토리도 같이 생성할지 여부(true: mkdirs/false: mkdir)
* @return boolean 작업의 성공 여부
* */
public boolean createFolder(String folderPath, boolean isRecursive){
boolean isSuccess = true;
File newFolder = new File(this.setFilePathReplaceAll(folderPath));
if(!newFolder.exists()){
if(!newFolder.isFile()){
if(isRecursive){
newFolder.mkdirs();
}else{
newFolder.mkdir();
}
}else{
isSuccess = false;
fileIoMessage = "같은 이름의 파일이 존재 합니다.";
}
}else{
isSuccess = false;
fileIoMessage = "파일 혹은 폴더가 존재 합니다.";
}
return isSuccess;
}
/**
* newFolder 폴더를 생성하는 메소드
* @param File newFolder 생성할 폴더
* @param boolean isRecursive 폴더를 생성할때 상위 디렉토리도 같이 생성할지 여부(true: mkdirs/false: mkdir)
* @return boolean 작업의 성공 여부
* */
public boolean createFolder(File newFolder, boolean isRecursive){
boolean isSuccess = true;
if(!newFolder.exists()){
if(!newFolder.isFile()){
if(isRecursive){
newFolder.mkdirs();
}else{
newFolder.mkdir();
}
}else{
isSuccess = false;
fileIoMessage = "같은 이름의 파일이 존재 합니다.";
}
}else{
isSuccess = false;
fileIoMessage = "파일 혹은 폴더가 존재 합니다.";
}
return isSuccess;
}
/**
* filePath 경로에 해당하는 파일을 생성하는 메소드
* @param String filePath 생성할 파일 경로
* @return boolean 작업의 성공 여부
* */
public boolean createFile(String filePath){
boolean isSuccess = true;
File newFile = new File(this.setFilePathReplaceAll(filePath));
if(!newFile.exists()){
if(!newFile.isDirectory()){
try {
newFile.createNewFile();
} catch (IOException e) {
isSuccess = false;
log.error(e);
System.out.println("FileIOUtil > createFile(String filePath) IOException happen");
fileIoMessage = "작업중 에러가 발생 되었습니다.";
}
}else{
isSuccess = false;
fileIoMessage = "같은 이름의 폴더가 존재 합니다.";
}
}else{
isSuccess = false;
fileIoMessage = "파일 혹은 폴더가 존재 합니다.";
}
return isSuccess;
}
/**
* newFile 파일을 생성하는 메소드
* @param File newFile 생성할 파일
* @return boolean 작업의 성공 여부
* */
public boolean createFile(File newFile){
boolean isSuccess = true;
if(!newFile.exists()){
if(!newFile.isDirectory()){
try {
newFile.createNewFile();
} catch (IOException e) {
isSuccess = false;
log.error(e);
System.out.println("FileIOUtil > createFile(File newFile) IOException happen");
fileIoMessage = "작업중 에러가 발생 되었습니다.";
}
}else{
isSuccess = false;
fileIoMessage = "같은 이름의 폴더가 존재 합니다.";
}
}else{
isSuccess = false;
fileIoMessage = "파일 혹은 폴더가 존재 합니다.";
}
return isSuccess;
}
/**
* deleteFilePath 경로의 파일을 삭제하는 메소드
* @param String deleteFilePath 삭제할 파일 경로
* */
public void deleteFile(String deleteFilePath){
File deleteFile = new File(this.setFilePathReplaceAll(deleteFilePath));
deleteFile.delete();
}
/**
* deleteFolderPath 경로의 폴더를 삭제하는 메소드 해당 폴더 삭제시 하위 폴더 및 파일을 모두 삭제 합니다.
* @param String deleteFolderPath 삭제할 폴더 경로
* @return boolean 작업의 성공 여부
* */
public boolean deleteFolder(String deleteFolderPath){
boolean isSuccess = true;
File deleteFolder = new File(this.setFilePathReplaceAll(deleteFolderPath));
try {
FileUtils.deleteDirectory(deleteFolder);
} catch (IOException e) {
isSuccess = false;
log.error(e);
System.out.println("FileIOUtil > deleteFolder(String deleteFolderPath) IOException happen");
fileIoMessage = "작업중 에러가 발생 되었습니다.";
}
return isSuccess;
}
/**
* deleteFolder 폴더를 삭제하는 메소드 해당 폴더 삭제시 하위 폴더 및 파일을 모두 삭제 합니다.
* @param File deleteFolder 삭제할 폴더
* @return boolean 작업의 성공 여부
* */
public boolean deleteFolder(File deleteFolder){
boolean isSuccess = true;
try {
FileUtils.deleteDirectory(deleteFolder);
} catch (IOException e) {
isSuccess = false;
log.error(e);
System.out.println("FileIOUtil > deleteFolder(File deleteFolder) IOException happen");
fileIoMessage = "작업중 에러가 발생 되었습니다.";
}
return isSuccess;
}
/**
* 전달 받은 fileName 의 파일 확장자 정보를 넘겨주는 메소드
* @param String fileName 파일명
* @return String 파일 타입
* */
public String fileTypeName(String fileName){
if(fileName!=null && !"".equals(fileName)){
return fileName.substring(fileName.lastIndexOf(".")+1, fileName.length());
}else{
return "";
}
}
/**
* 파일 작업후 에러가 발생되는 경우 해당 에러의 상세 내용을 넘겨주는 메소드
* */
public String getfileIoMessage() {
return fileIoMessage;
}
public String setFilePathReplaceAll(String value) {
String returnValue = value;
if (returnValue == null || returnValue.trim().equals("")) {
return "";
}
returnValue = returnValue.replaceAll("[.][.]/", "");
returnValue = returnValue.replaceAll("[.]/", "");
returnValue = returnValue.replaceAll("[.]\\\\\\\\", "");
returnValue = returnValue.replaceAll("[.][.]\\\\\\\\", "");
returnValue = returnValue.replaceAll("\\\\\\\\", "");
returnValue = returnValue.replaceAll("\\\\[.]\\\\[.]", ""); // ..
returnValue = returnValue.replaceAll("&", "");
return returnValue;
}
}