Classes de criptografia e descriptografia de string e MD5 comumente usadas em Java
Nós, programadores Java, costumamos usar algumas classes de ferramentas ao desenvolver projetos. Hoje vou compartilhar duas das minhas aulas de ferramentas que você pode usar em seus projetos.
1. Classe de ferramenta de string
pacote com.itjh.javaUtil;importar java.io.ByteArrayInputStream;importar java.io.File;importar java.io.FileInputStream;importar java.io.FileOutputStream;importar java.io.IOException;importar java.io.InputStream;importar java.io.OutputStream;/** * Classe auxiliar para operações relacionadas a arquivos. * * @author Song Lijun* @date 24 de junho de 2014*/public class FileUtil {private static final String FOLDER_SEPARATOR = "/";private static final char EXTENSION_SEPARATOR = '.';/** * Função: copiar arquivos ou pasta de arquivos . * * @author Song Lijun* @date 24 de junho de 2014* @param inputFile * Arquivo de origem* @param outputFile * Arquivo de destino* @param isOverWrite * Se deve ser sobrescrito (somente para arquivos) * @throws IOException */public static void copy (Arquivo inputFile, Arquivo outputFile, booleano isOverWrite) lança IOException {if (!inputFile.exists()) {throw new RuntimeException(inputFile.getPath() + "O diretório de origem não existe!");}copyPri(inputFile, outputFile, isOverWrite);}/** * Função: uso recursivo para copiar. * * @author Song Lijun* @date 24 de junho de 2014* @param inputFile * @param outputFile * @param isOverWrite * @throws IOException */private static void copyPri(File inputFile, File outputFile,boolean isOverWrite) lança IOException {/ / é um arquivo. if (inputFile.isFile()) {copySimpleFile(inputFile, outputFile, isOverWrite);} else {// Pasta if (!outputFile.exists()) {outputFile.mkdir();}// Loop de subpastas para (Arquivo filho: inputFile.listFiles()) {copy(child,new File(outputFile.getPath() + "/" + child.getName()),isOverWrite);}}}/** * Função: copiar um único arquivo* * @author Song Lijun* @date 24 de junho de 2014* @param inputFile * arquivo de origem* @param outputFile * arquivo de destino * @param isOverWrite * Se a substituição é permitida * @throws IOException */private static void copySimpleFile(File inputFile, File outputFile,boolean isOverWrite) lança IOException {//O arquivo de destino já existe if (outputFile.exists()) {if (isOverWrite) {if (!outputFile.delete()) {throw new RuntimeException(outputFile.getPath() + " Não é possível substituir! ");}} else {// A substituição não é permitida 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();}/** * Função: deletar arquivos* * @author Song Lijun* @date 24 de junho de 2014* @param file * file*/public static void delete(File file) {deleteFile(file);}/** * Função: deletar arquivo, uso recursivo interno* * @author Song Lijun* @data 2014 junho 24, 2016 * @param file * file * @return boolean true se a exclusão for bem-sucedida, false se a exclusão falhar. */private static void deleteFile(Arquivo file) {if (file == null || !file.exists()) {return;}//Arquivo único if (!file.isDirectory()) {boolean delFlag = file.delete ();if (!delFlag) {throw new RuntimeException(file.getPath() + "Falha na exclusão!");} else {return;}}// Excluir subdiretório para (Arquivo filho : file.listFiles()) {deleteFile(child);}// Exclua você mesmo file.delete();}/** * Extraia a extensão do arquivo do caminho do arquivo, por exemplo "mypath/myfile.txt" ->. "txt". * @author Song Lijun* * @date 24 de junho de 2014* @param caminho do arquivo* @return Se o caminho for nulo, retorne nulo diretamente. */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);}/** * Extraia o nome do arquivo do caminho do arquivo, por exemplo: "mypath/myfile.txt" -> "myfile.txt". * @author Song Lijun* * @date 24 de junho de 2014* @param path * Caminho do arquivo. * @return O nome do arquivo extraído Se path for nulo, null será retornado diretamente. */public static String getFilename(String path) {if (path == null) {return null;}int separatorIndex = path.lastIndexOf(FOLDER_SEPARATOR);return (separatorIndex != -1 ? path.substring(separatorIndex + 1): path);}/** * Função: Salva o arquivo. * * @author Song Lijun* @date 24 de junho de 2014* @param content * Bytes* @param file * Arquivo salvo em * @throws IOException */public static void save(byte[] content, File file) throws IOException {if (file == null) {throw new RuntimeException("O arquivo salvo não pode estar vazio");} if (content == null) {throw new RuntimeException("O fluxo do arquivo não pode estar vazio");}InputStream is = new ByteArrayInputStream(content);save(is, file);}/** * Função: Salvar o arquivo* * @author Song Lijun* @date 24 de junho , 2014 * @param streamIn * Fluxo de arquivo * @param arquivo * Arquivo salvo em * @throws IOException */public static void save(InputStream streamIn, arquivo de arquivo) lança IOException {if (file == null) {throw new RuntimeException("O arquivo salvo não pode estar vazio");} if (streamIn == null) {throw new RuntimeException("O fluxo do arquivo não pode estar vazio");}/ /Output Stream OutputStream streamOut = null; //Cria a pasta se ela não existir. 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. Ferramentas MD5
pacote com.itjh.javaUtil;importar java.io.ByteArrayInputStream;importar java.io.File;importar java.io.FileInputStream;importar java.io.FileOutputStream;importar java.io.IOException;importar java.io.InputStream;importar java.io.OutputStream;/** * Classe auxiliar para operações relacionadas a arquivos. * * @author Song Lijun* @date 24 de junho de 2014*/public class FileUtil {private static final String FOLDER_SEPARATOR = "/";private static final char EXTENSION_SEPARATOR = '.';/** * Função: copiar arquivos ou pasta de arquivos . * * @author Song Lijun* @date 24 de junho de 2014* @param inputFile * Arquivo de origem* @param outputFile * Arquivo de destino* @param isOverWrite * Se deve ser sobrescrito (somente para arquivos) * @throws IOException */public static void copy (Arquivo inputFile, Arquivo outputFile, booleano isOverWrite) lança IOException {if (!inputFile.exists()) {throw new RuntimeException(inputFile.getPath() + "O diretório de origem não existe!");}copyPri(inputFile, outputFile, isOverWrite);}/** * Função: uso recursivo para copiar. * * @author Song Lijun* @date 24 de junho de 2014* @param inputFile * @param outputFile * @param isOverWrite * @throws IOException */private static void copyPri(File inputFile, File outputFile,boolean isOverWrite) lança IOException {/ / é um arquivo. if (inputFile.isFile()) {copySimpleFile(inputFile, outputFile, isOverWrite);} else {// Pasta if (!outputFile.exists()) {outputFile.mkdir();}// Loop de subpastas para (Arquivo filho: inputFile.listFiles()) {copy(child,new File(outputFile.getPath() + "/" + child.getName()),isOverWrite);}}}/** * Função: copiar um único arquivo* * @author Song Lijun* @date 24 de junho de 2014* @param inputFile * arquivo de origem* @param outputFile * arquivo de destino * @param isOverWrite * Se a substituição é permitida * @throws IOException */private static void copySimpleFile(File inputFile, File outputFile,boolean isOverWrite) lança IOException {//O arquivo de destino já existe if (outputFile.exists()) {if (isOverWrite) {if (!outputFile.delete()) {throw new RuntimeException(outputFile.getPath() + " Não é possível substituir! ");}} else {// A substituição não é permitida 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();}/** * Função: deletar arquivos* * @author Song Lijun* @date 24 de junho de 2014* @param file * file*/public static void delete(File file) {deleteFile(file);}/** * Função: deletar arquivo, uso recursivo interno* * @author Song Lijun* @data 2014 junho 24, 2016 * @param file * file * @return boolean true se a exclusão for bem-sucedida, false se a exclusão falhar. */private static void deleteFile(Arquivo file) {if (file == null || !file.exists()) {return;}//Arquivo único if (!file.isDirectory()) {boolean delFlag = file.delete ();if (!delFlag) {throw new RuntimeException(file.getPath() + "Falha na exclusão!");} else {return;}}// Excluir subdiretório para (Arquivo filho : file.listFiles()) {deleteFile(child);}// Exclua você mesmo file.delete();}/** * Extraia a extensão do arquivo do caminho do arquivo, por exemplo "mypath/myfile.txt" ->. "txt". * @author Song Lijun* * @date 24 de junho de 2014* @param caminho do arquivo* @return Se o caminho for nulo, retorne nulo diretamente. */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);}/** * Extraia o nome do arquivo do caminho do arquivo, por exemplo: "mypath/myfile.txt" -> "myfile.txt". * @author Song Lijun* * @date 24 de junho de 2014* @param path * Caminho do arquivo. * @return O nome do arquivo extraído Se path for nulo, null será retornado diretamente. */public static String getFilename(String path) {if (path == null) {return null;}int separatorIndex = path.lastIndexOf(FOLDER_SEPARATOR);return (separatorIndex != -1 ? path.substring(separatorIndex + 1): path);}/** * Função: Salva o arquivo. * * @author Song Lijun* @date 24 de junho de 2014* @param content * Bytes* @param file * Arquivo salvo em * @throws IOException */public static void save(byte[] content, File file) throws IOException {if (file == null) {throw new RuntimeException("O arquivo salvo não pode estar vazio");} if (content == null) {throw new RuntimeException("O fluxo do arquivo não pode estar vazio");}InputStream is = new ByteArrayInputStream(content);save(is, file);}/** * Função: Salvar o arquivo* * @author Song Lijun* @date 24 de junho , 2014 * @param streamIn * Fluxo de arquivo * @param arquivo * Arquivo salvo em * @throws IOException */public static void save(InputStream streamIn, arquivo de arquivo) lança IOException {if (file == null) {throw new RuntimeException("O arquivo salvo não pode estar vazio");} if (streamIn == null) {throw new RuntimeException("O fluxo do arquivo não pode estar vazio");}/ /Output Stream OutputStream streamOut = null; //Cria a pasta se ela não existir. 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();}}