Java에서 일반적으로 사용되는 문자열 및 MD5 암호화 및 암호 해독 클래스
우리 Java 프로그래머는 프로젝트를 개발할 때 종종 일부 도구 클래스를 사용합니다. 오늘은 프로젝트에서 사용할 수 있는 두 가지 도구 클래스를 공유하겠습니다.
1. 문자열 도구 클래스
패키지 com.itjh.javaUtil;가져오기 java.io.ByteArrayInputStream;가져오기 java.io.File;가져오기 java.io.FileInputStream;가져오기 java.io.FileOutputStream;가져오기 java.io.IOException;가져오기 java.io.InputStream;가져오기 java.io.OutputStream;/** * 파일 관련 작업을 위한 보조 클래스입니다. * * @author Song Lijun* @date 2014년 6월 24일*/public class FileUtil {private static final String FOLDER_SEPARATOR = "/";private static final char EXTENSION_SEPARATOR = '.';/** * 기능: 파일 또는 파일 폴더 복사 . * * @author Song Lijun* @date 2014년 6월 24일* @param inputFile * 소스 파일* @param outputFile * 대상 파일* @param isOverWrite * 덮어쓰기 여부(파일에만 해당) * @throws IOException */public static void copy (파일 입력파일, 파일 출력파일, 부울 isOverWrite) IOException이 발생합니다. (!inputFile.exists()) {throw new RuntimeException(inputFile.getPath() + "소스 디렉터리가 존재하지 않습니다!");}copyPri(inputFile, outputFile, isOverWrite);}/** * 함수: 다음에 대한 재귀 사용 복사 . * * @author Song Lijun* @date 2014년 6월 24일* @param inputFile * @param outputFile * @param isOverWrite * @throws IOException */private static void copyPri(File inputFile, File outputFile,boolean isOverWrite) throws IOException {/ / 파일입니다. if (inputFile.isFile()) {copySimpleFile(inputFile, outputFile, isOverWrite);} else {// 폴더 if (!outputFile.exists()) {outputFile.mkdir();}// 루프 하위 폴더 for ( 파일 하위: inputFile.listFiles()) {copy(child,new File(outputFile.getPath()) + "/" + child.getName()),isOverWrite);}}}/** * 함수: 단일 파일 복사* * @author Song Lijun* @date 2014년 6월 24일* @param inputFile * 소스 파일* @param outputFile * 대상 파일 * @param isOverWrite * 덮어쓰기 허용 여부 * @throws IOException */private static void copySimpleFile(File inputFile, File outputFile,boolean isOverWrite) throws IOException {//대상 파일이 이미 존재합니다. if (outputFile.exists()) {if (isOverWrite) {if (!outputFile.delete()) {throw new RuntimeException(outputFile.getPath() + " 덮어쓸 수 없습니다! ");}} else {// 덮어쓰기는 허용되지 않습니다. return;}}InputStream in = new FileInputStream(inputFile);OutputStream out = new FileOutputStream(outputFile);byte[] buffer = new byte[1024];int read = 0;while ((read = in.read(buffer)) != -1) {out. write(buffer, 0, read);}in.close();out.close();}/** * 기능: 파일 삭제* * @author 송리준* @date 2014년 6월 24일* @param file * file*/public static void delete(파일 파일) {deleteFile(file);}/** * 기능: 파일 삭제, 내부 재귀 사용* * @author Song Lijun* @date 2014년 6월 2016년 24월 24일 * @param file * file * @return boolean 삭제에 성공하면 true이고, 삭제에 실패하면 false입니다. */private static void deleteFile(파일 파일) {if (file == null || !file.exists()) {return;}//단일 파일 if (!file.isDirectory()) {boolean delFlag = file.delete ();if (!delFlag) {throw new RuntimeException(file.getPath() + "삭제 실패!");} else {return;}}// (파일 하위 디렉토리 삭제) : file.listFiles()) {deleteFile(child);}// 자신을 삭제합니다. file.delete();}/** * 파일 경로에서 파일 확장자를 추출합니다(예: "mypath/myfile.txt"). "txt". * @author Song Lijun* * @date 2014년 6월 24일* @param 파일 경로* @return 경로가 null인 경우 null을 직접 반환합니다. */public static String getFilenameExtension(String path) {if (path == null) {return null;}int extIndex = path.lastIndexOf(EXTENSION_SEPARATOR);if (extIndex == -1) {return null;}int FolderIndex = path .lastIndexOf(FOLDER_SEPARATOR);if (folderIndex > extIndex) {return null;}return path.substring(extIndex + 1);}/** * 파일 경로에서 파일 이름을 추출합니다(예: "mypath/myfile.txt" -> "myfile.txt"). * @author 송리준* * @date 2014년 6월 24일* @param path * 파일 경로. * @return 추출된 파일 이름. path가 null인 경우 null이 직접 반환됩니다. */public static String getFilename(String path) {if (path == null) {return null;}int SeparateIndex = path.lastIndexOf(FOLDER_SEPARATOR);return (separatorIndex != -1 ? path.substring(separatorIndex + 1): path);}/** * 기능: 파일을 저장합니다. * * @author Song Lijun* @date 2014년 6월 24일* @param 콘텐츠 * 바이트* @param 파일 * 파일 저장 위치 * @throws IOException */public static void save(byte[] content, File file) throws IOException {if (file == null) {throw new RuntimeException("저장된 파일은 비워둘 수 없습니다.");} if (content == null) {throw new RuntimeException("파일 스트림은 비워둘 수 없습니다.");}InputStream is = new ByteArrayInputStream(content);save(is, file);}/** * 함수: 파일 저장* * @author Song Lijun* @date 6월 24일 , 2014 * @param streamIn * 파일 스트림 * @param file * 파일이 다음에 저장됨 * @throws IOException */public static void save(InputStream streamIn, File file) throws IOException {if (file == null) {throw new RuntimeException("저장된 파일은 비워둘 수 없습니다.");} if (streamIn == null) {throw new RuntimeException("파일 스트림은 비워둘 수 없습니다.");}/ /Output Stream OutputStream streamOut = null; //폴더가 없으면 생성합니다. if (!file.getParentFile().exists()) {file.getParentFile().mkdirs();}streamOut = new FileOutputStream(file);int bytesRead = 0;byte[] buffer = new byte[8192];while ((bytesRead = streamIn.read(buffer, 0, 8192)) != -1) {streamOut.write(buffer, 0, bytesRead);}streamOut.close();streamIn.close();}}
2. MD5 도구
패키지 com.itjh.javaUtil;가져오기 java.io.ByteArrayInputStream;가져오기 java.io.File;가져오기 java.io.FileInputStream;가져오기 java.io.FileOutputStream;가져오기 java.io.IOException;가져오기 java.io.InputStream;가져오기 java.io.OutputStream;/** * 파일 관련 작업을 위한 보조 클래스입니다. * * @author Song Lijun* @date 2014년 6월 24일*/public class FileUtil {private static final String FOLDER_SEPARATOR = "/";private static final char EXTENSION_SEPARATOR = '.';/** * 기능: 파일 또는 파일 폴더 복사 . * * @author Song Lijun* @date 2014년 6월 24일* @param inputFile * 소스 파일* @param outputFile * 대상 파일* @param isOverWrite * 덮어쓰기 여부(파일에만 해당) * @throws IOException */public static void copy (파일 입력파일, 파일 출력파일, 부울 isOverWrite) IOException이 발생합니다. (!inputFile.exists()) {throw new RuntimeException(inputFile.getPath() + "소스 디렉터리가 존재하지 않습니다!");}copyPri(inputFile, outputFile, isOverWrite);}/** * 함수: 재귀 사용 복사 . * * @author Song Lijun* @date 2014년 6월 24일* @param inputFile * @param outputFile * @param isOverWrite * @throws IOException */private static void copyPri(File inputFile, File outputFile,boolean isOverWrite) throws IOException {/ / 파일입니다. if (inputFile.isFile()) {copySimpleFile(inputFile, outputFile, isOverWrite);} else {// 폴더 if (!outputFile.exists()) {outputFile.mkdir();}// 루프 하위 폴더 for ( 파일 하위: inputFile.listFiles()) {copy(child,new File(outputFile.getPath()) + "/" + child.getName()),isOverWrite);}}}/** * 함수: 단일 파일 복사* * @author Song Lijun* @date 2014년 6월 24일* @param inputFile * 소스 파일* @param outputFile * 대상 파일 * @param isOverWrite * 덮어쓰기 허용 여부 * @throws IOException */private static void copySimpleFile(File inputFile, File outputFile,boolean isOverWrite) throws IOException {//대상 파일이 이미 존재합니다. if (outputFile.exists()) {if (isOverWrite) {if (!outputFile.delete()) {throw new RuntimeException(outputFile.getPath() + " 덮어쓸 수 없습니다! ");}} else {// 덮어쓰기는 허용되지 않습니다. return;}}InputStream in = new FileInputStream(inputFile);OutputStream out = new FileOutputStream(outputFile);byte[] buffer = new byte[1024];int read = 0;while ((read = in.read(buffer)) != -1) {out. write(buffer, 0, read);}in.close();out.close();}/** * 기능: 파일 삭제* * @author 송리준* @date 2014년 6월 24일* @param file * file*/public static void delete(파일 파일) {deleteFile(file);}/** * 기능: 파일 삭제, 내부 재귀 사용* * @author Song Lijun* @date 2014년 6월 2016년 24월 24일 * @param file * file * @return boolean 삭제에 성공하면 true이고, 삭제에 실패하면 false입니다. */private static void deleteFile(파일 파일) {if (file == null || !file.exists()) {return;}//단일 파일 if (!file.isDirectory()) {boolean delFlag = file.delete ();if (!delFlag) {throw new RuntimeException(file.getPath() + "삭제 실패!");} else {return;}}// (파일 하위 디렉토리 삭제) : file.listFiles()) {deleteFile(child);}// 자신을 삭제합니다. file.delete();}/** * 파일 경로에서 파일 확장자를 추출합니다(예: "mypath/myfile.txt"). "txt". * @author Song Lijun* * @date 2014년 6월 24일* @param 파일 경로* @return 경로가 null인 경우 null을 직접 반환합니다. */public static String getFilenameExtension(String path) {if (path == null) {return null;}int extIndex = path.lastIndexOf(EXTENSION_SEPARATOR);if (extIndex == -1) {return null;}int FolderIndex = path .lastIndexOf(FOLDER_SEPARATOR);if (folderIndex > extIndex) {return null;}return path.substring(extIndex + 1);}/** * 파일 경로에서 파일 이름을 추출합니다(예: "mypath/myfile.txt" -> "myfile.txt"). * @author 송리준* * @date 2014년 6월 24일* @param path * 파일 경로. * @return 추출된 파일 이름. path가 null인 경우 null이 직접 반환됩니다. */public static String getFilename(String path) {if (path == null) {return null;}int SeparateIndex = path.lastIndexOf(FOLDER_SEPARATOR);return (separatorIndex != -1 ? path.substring(separatorIndex + 1): path);}/** * 기능: 파일을 저장합니다. * * @author Song Lijun* @date 2014년 6월 24일* @param 콘텐츠 * 바이트* @param 파일 * 파일 저장 위치 * @throws IOException */public static void save(byte[] content, File file) throws IOException {if (file == null) {throw new RuntimeException("저장된 파일은 비워둘 수 없습니다.");} if (content == null) {throw new RuntimeException("파일 스트림은 비워둘 수 없습니다.");}InputStream is = new ByteArrayInputStream(content);save(is, file);}/** * 함수: 파일 저장* * @author Song Lijun* @date 6월 24일 , 2014 * @param streamIn * 파일 스트림 * @param file * 파일이 다음에 저장됨 * @throws IOException */public static void save(InputStream streamIn, File file) throws IOException {if (file == null) {throw new RuntimeException("저장된 파일은 비워둘 수 없습니다.");} if (streamIn == null) {throw new RuntimeException("파일 스트림은 비워둘 수 없습니다.");}/ /Output Stream OutputStream streamOut = null; //폴더가 없으면 생성합니다. if (!file.getParentFile().exists()) {file.getParentFile().mkdirs();}streamOut = new FileOutputStream(file);int bytesRead = 0;byte[] buffer = new byte[8192];while ((bytesRead = streamIn.read(buffer, 0, 8192)) != -1) {streamOut.write(buffer, 0, bytesRead);}streamOut.close();streamIn.close();}}