java中文件的加密,解密,文件读取等

package com.xuanwu.mtoserver.util;

import java.io.*;

/**

  • @author Toby 复制文件夹或文件夹
    */
    public class FileUtil {

    public static void main(String args[]) throws IOException {
    // 源文件夹
    String url1 = “D:/user/test/”;
    // 目标文件夹
    String url2 = “D:/user/testcopy/”;
    // 创建目标文件夹
    (new File(url2)).mkdirs();
    // 获取源文件夹当前下的文件或目录
    File[] file = (new File(url1)).listFiles();
    for (int i = 0; i < file.length; i++) {
    if (file[i].isFile()) {
    // 复制文件
    String type = file[i].getName().substring(file[i].getName().lastIndexOf(".") + 1);

             if (type.equalsIgnoreCase("txt"))// 转码处理
                 copyFile(file[i], new File(url2 + file[i].getName()), MTOServerConstants.CODE_UTF_8, MTOServerConstants.CODE_GBK);
             else
                 copyFile(file[i], new File(url2 + file[i].getName()));
         }
         if (file[i].isDirectory()) {
             // 复制目录
             String sourceDir = url1 + File.separator + file[i].getName();
             String targetDir = url2 + File.separator + file[i].getName();
             copyDirectiory(sourceDir, targetDir);
         }
     }
    

    }

    // 复制文件
    public static void copyFile(File sourceFile, File targetFile) throws IOException {
    BufferedInputStream inBuff = null;
    BufferedOutputStream outBuff = null;
    try {
    // 新建文件输入流并对它进行缓冲
    inBuff = new BufferedInputStream(new FileInputStream(sourceFile));

         // 新建文件输出流并对它进行缓冲
         outBuff = new BufferedOutputStream(new FileOutputStream(targetFile));
    
         // 缓冲数组
         byte[] b = new byte[1024 * 5];
         int len;
         while ((len = inBuff.read(b)) != -1) {
             outBuff.write(b, 0, len);
         }
         // 刷新此缓冲的输出流
         outBuff.flush();
     } finally {
         // 关闭流
         if (inBuff != null)
             inBuff.close();
         if (outBuff != null)
             outBuff.close();
     }
    

    }

    // 复制文件夹
    public static void copyDirectiory(String sourceDir, String targetDir) throws IOException {
    // 新建目标目录
    (new File(targetDir)).mkdirs();
    // 获取源文件夹当前下的文件或目录
    File[] file = (new File(sourceDir)).listFiles();
    for (int i = 0; i < file.length; i++) {
    if (file[i].isFile()) {
    // 源文件
    File sourceFile = file[i];
    // 目标文件
    File targetFile = new File(new File(targetDir).getAbsolutePath() + File.separator + file[i].getName());
    copyFile(sourceFile, targetFile);
    }
    if (file[i].isDirectory()) {
    // 准备复制的源文件夹
    String dir1 = sourceDir + “/” + file[i].getName();
    // 准备复制的目标文件夹
    String dir2 = targetDir + “/” + file[i].getName();
    copyDirectiory(dir1, dir2);
    }
    }
    }

    /**
    *

    • @param srcFileName
    • @param destFileName
    • @param srcCoding
    • @param destCoding
    • @throws IOException
      */
      public static void copyFile(File srcFileName, File destFileName, String srcCoding, String destCoding) throws IOException {// 把文件转换为GBK文件
      BufferedReader br = null;
      BufferedWriter bw = null;
      try {
      br = new BufferedReader(new InputStreamReader(new FileInputStream(srcFileName), srcCoding));
      bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(destFileName), destCoding));
      char[] cbuf = new char[1024 * 5];
      int len = cbuf.length;
      int off = 0;
      int ret = 0;
      while ((ret = br.read(cbuf, off, len)) > 0) {
      off += ret;
      len -= ret;
      }
      bw.write(cbuf, 0, off);
      bw.flush();
      } finally {
      if (br != null)
      br.close();
      if (bw != null)
      bw.close();
      }
      }

    /**
    *

    • @param filepath
    • @throws IOException
      */
      public static void del(String filepath) throws IOException {
      File f = new File(filepath);// 定义文件路径
      if (f.exists() && f.isDirectory()) {// 判断是文件还是目录
      if (f.listFiles().length == 0) {// 若目录下没有文件则直接删除
      f.delete();
      } else {// 若有则把文件放进数组,并判断是否有下级目录
      File delFile[] = f.listFiles();
      int i = f.listFiles().length;
      for (int j = 0; j < i; j++) {
      if (delFile[j].isDirectory()) {
      del(delFile[j].getAbsolutePath());// 递归调用del方法并取得子目录路径
      }
      delFile[j].delete();// 删除文件
      }
      }
      }
      }
      }

package com.xuanwu.mtoserver.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Zip;
import org.apache.tools.ant.types.FileSet;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import com.xuanwu.smap.comapi.SmapMtMessage;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**

  • @author Toby 通用工具类
    */
    public class Utils {

    /**

    • @param args

    • @throws Exception

    • @throws IOException
      */
      public static void main(String[] args) throws IOException, Exception {
      // TODO Auto-generated method stub
      // File file = new File(“D:/user/mms.xml”);
      // System.out.println(file.renameTo(new File(“D:/user/mms5.xml”)));

      // 1
      // compress(“D:/user/test”, “D:/user/test.zip”);

      /*

      • String fileName = “D:/user/88.zip”; try {
      • System.out.println(encryptBASE64(readFileToBytes(fileName))); } catch
      • (Exception e) { // TODO Auto-generated catch block
      • e.printStackTrace(); }
        */

      /*

      • String mi
      • =“UEsDBBQACAA”;
      • RandomAccessFile inOut = new RandomAccessFile(
      • “D:/user/sample.”,“rw”); inOut.write(decryptBASE64(mi));
      • inOut.close();
        */

      // System.out.println(new String(decryptBASE64(“5rWL6K+V”),“utf-8”));
      // 2
      // String xml =
      // createXML(“1828”,“qww”,“123456”,“10658103619033”,“15918542546”,encryptBASE64(“两款茶饮润肺护肤防过敏”.getBytes()),encryptBASE64(readFileToBytes(“D:/user/test.zip”)));
      // System.out.println(xml);
      /*

      • String xml = "<?xml version=“1.0” encoding=“UTF-8”
      • standalone=“yes”?><TaskDataTransfer4ERsp
      • xmlns=“http://www.aspirehld.com/iecp/TaskDataTransfer4ERsp”>2000没有获得IP鉴权!";
      • Document doc = DocumentHelper.parseText(xml); // 将字符串转为XML Element
      • rootElt = doc.getRootElement(); // 获取根节点
      • String resultCode = rootElt.element(“ResultCode”).getTextTrim();
      • String TaskId = rootElt.element(“TaskId”).getTextTrim(); String
      • ResultMSG = rootElt.element(“ResultMSG”).getTextTrim();
      • System.out.println(" “+resultCode+” “+TaskId+” "+ResultMSG);
        */

    }

    /**

    • BASE64解密
    • @param key
    • @return
    • @throws Exception
      */
      public static byte[] decryptBASE64(String key) throws Exception {
      return (new BASE64Decoder()).decodeBuffer(key);
      }

    /**

    • BASE64加密
    • @param key
    • @return
    • @throws Exception
      */
      public static String encryptBASE64(byte[] key) throws Exception {
      return (new BASE64Encoder()).encodeBuffer(key);
      }

    /**

    • 获取路径下所有文件名
    • @param path
    • @return
      */
      public static String[] getFile(String path) {
      File file = new File(path);
      String[] name = file.list();
      return name;
      }

    /**
    *

    • @param sourceDirPath

    • @param targetDirPath

    • @throws IOException
      */
      public static void copyDir(String sourceDirPath, String targetDirPath) throws IOException {
      // 创建目标文件夹
      (new File(targetDirPath)).mkdirs();
      // 获取源文件夹当前下的文件或目录
      File[] file = (new File(sourceDirPath)).listFiles();
      for (int i = 0; i < file.length; i++) {
      if (file[i].isFile()) {
      // 复制文件
      String type = file[i].getName().substring(file[i].getName().lastIndexOf(".") + 1);

           if (type.equalsIgnoreCase("txt"))
               FileUtil.copyFile(file[i], new File(targetDirPath + file[i].getName()), MTOServerConstants.CODE_UTF_8,
                       MTOServerConstants.CODE_GBK);
           else
               FileUtil.copyFile(file[i], new File(targetDirPath + file[i].getName()));
       }
       if (file[i].isDirectory()) {
           // 复制目录
           String sourceDir = sourceDirPath + File.separator + file[i].getName();
           String targetDir = targetDirPath + File.separator + file[i].getName();
           FileUtil.copyDirectiory(sourceDir, targetDir);
       }
      

      }
      }

    /**

    • 读取文件中内容
    • @param path
    • @return
    • @throws IOException
      */
      public static String readFileToString(String path) throws IOException {
      String resultStr = null;
      FileInputStream fis = null;
      try {
      fis = new FileInputStream(path);
      byte[] inBuf = new byte[2000];
      int len = inBuf.length;
      int off = 0;
      int ret = 0;
      while ((ret = fis.read(inBuf, off, len)) > 0) {
      off += ret;
      len -= ret;
      }
      resultStr = new String(new String(inBuf, 0, off, MTOServerConstants.CODE_GBK).getBytes());
      } finally {
      if (fis != null)
      fis.close();
      }
      return resultStr;
      }

    /**

    • 文件转成字节数组
    • @param path
    • @return
    • @throws IOException
      */
      public static byte[] readFileToBytes(String path) throws IOException {
      byte[] b = null;
      InputStream is = null;
      File f = new File(path);
      try {
      is = new FileInputStream(f);
      b = new byte[(int) f.length()];
      is.read(b);
      } finally {
      if (is != null)
      is.close();
      }
      return b;
      }

    /**

    • 将byte写入文件中
    • @param fileByte
    • @param filePath
    • @throws IOException
      */
      public static void byteToFile(byte[] fileByte, String filePath) throws IOException {
      OutputStream os = null;
      try {
      os = new FileOutputStream(new File(filePath));
      os.write(fileByte);
      os.flush();
      } finally {
      if (os != null)
      os.close();
      }
      }

    /**

    • 将目录文件打包成zip

    • @param srcPathName

    • @param zipFilePath

    • @return 成功打包true 失败false
      */
      public static boolean compress(String srcPathName, String zipFilePath) {
      if (strIsNull(srcPathName) || strIsNull(zipFilePath))
      return false;

      File zipFile = new File(zipFilePath);
      File srcdir = new File(srcPathName);
      if (!srcdir.exists())
      return false;
      Project prj = new Project();
      Zip zip = new Zip();
      zip.setProject(prj);
      zip.setDestFile(zipFile);
      FileSet fileSet = new FileSet();
      fileSet.setProject(prj);
      fileSet.setDir(srcdir);
      zip.addFileset(fileSet);
      zip.execute();
      return zipFile.exists();
      }

    /**

    • 判空字串
    • @param str
    • @return 为空true
      */
      public static boolean strIsNull(String str) {
      return str == null || str.equals("");
      }

    /**

    • 折分数组

    • @param ary

    • @param subSize

    • @return
      */
      public static List<List> splitAry(Object[] ary, int subSize) {
      int count = ary.length % subSize == 0 ? ary.length / subSize : ary.length / subSize + 1;

      List<List> subAryList = new ArrayList<List>();

      for (int i = 0; i < count; i++) {
      int index = i * subSize;

       List<Object> list = new ArrayList<Object>();
       int j = 0;
       while (j < subSize && index < ary.length) {
           list.add(ary[index++]);
           j++;
       }
      
       subAryList.add(list);
      

      }

      return subAryList;
      }

    /**

    • @param mobile
    • @return
      */
      public static String ArrayToString(Object[] mobile) {
      String destId = “”;
      for (Object phone : mobile) {
      destId += " " + (String) phone;
      }
      return destId.trim();
      }
      }
发布了34 篇原创文章 · 获赞 9 · 访问量 3856

猜你喜欢

转载自blog.csdn.net/weixin_44975322/article/details/102706398