파일 관련 작업을 하나의 클래스에서 처리하고 각 작업자 별로 해당 메소드를 사용하는 방식으로 

통일하기 위해서 작업중인 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;

  }

}



반응형
Posted by 질주하는구
,