• Java文件操作


    package com.xuanwu.mtoserver.util;

    import java.io.*;

    /**
     * @author Larack 复制文件夹或文件夹
     */
    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 Larack 通用工具类
     */
    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(readFileLaracktes(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(readFileLaracktes("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"><ResultCode>2000</ResultCode><TaskId>< /TaskId><ResultMSG>没有获得IP鉴权!</ResultMSG>< /TaskDataTransfer4ERsp>";
             * 
             * 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[] readFileLaracktes(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<Object>> splitAry(Object[] ary, int subSize) {
            int count = ary.length % subSize == 0 ? ary.length / subSize : ary.length / subSize + 1;

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

            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();
        }
    }
  • 相关阅读:
    [ 低危 ] mt网CRLF
    mysql之字段的修改,添加、删除,多表关系(外键),单表详细操作(增删改)
    mysql 之编码配置、引擎介绍、字段操作、数据类型及约束条件
    Navicat Premium永久激活方式
    centos 用户名密码忘记了怎么办?
    并发编程总结
    初识mysql
    线程queue、线程进程池,协程
    python解释器
    线程全局修改、死锁、递归锁、信号量、GIL以及多进程和多线程的比较
  • 原文地址:https://www.cnblogs.com/larack/p/4058879.html
Copyright © 2020-2023  润新知