Java批量生成配置文件

来源:互联网 发布:短信锦囊软件 编辑:程序博客网 时间:2024/06/07 14:36
package fileOperator;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.RandomAccessFile;import java.io.Reader;import java.nio.file.Files;import java.util.ArrayList;import java.util.List;public class FileUtils {    public String doReplace(String input, String replacement) {        return input.replaceAll(" ", replacement);    }    /**     * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。     */    public static void readFileByBytes(String fileName) {        File file = new File(fileName);        InputStream in = null;        try {            System.out.println("以字节为单位读取文件内容,一次读一个字节:");            // 一次读一个字节            in = new FileInputStream(file);            int tempbyte;            while ((tempbyte = in.read()) != -1) {                System.out.write(tempbyte);            }            in.close();        } catch (IOException e) {            e.printStackTrace();            return;        }        try {            System.out.println("以字节为单位读取文件内容,一次读多个字节:");            // 一次读多个字节            byte[] tempbytes = new byte[100];            int byteread = 0;            in = new FileInputStream(fileName);            showAvailableBytes(in);            // 读入多个字节到字节数组中,byteread为一次读入的字节数            while ((byteread = in.read(tempbytes)) != -1) {                System.out.write(tempbytes, 0, byteread);            }        } catch (Exception e1) {            e1.printStackTrace();        } finally {            if (in != null) {                try {                    in.close();                } catch (IOException e1) {                }            }        }    }    /**     * 以字符为单位读取文件,常用于读文本,数字等类型的文件     */    public static String readFileByChars(String fileName) {        String content = "";        StringBuilder sb = new StringBuilder(256);        File file = new File(fileName);        Reader reader = null;        try {            System.out.println("以字符为单位读取文件内容,一次读多个字节:");            // 一次读多个字符            char[] tempchars = new char[128];            int charread = 0;            reader = new InputStreamReader(new FileInputStream(fileName));            // 读入多个字符到字符数组中,charread为一次读取字符数            while ((charread = reader.read(tempchars)) != -1) {                // 同样屏蔽掉\r不显示                if ((charread == tempchars.length)) {                    sb.append(tempchars);                    // System.out.print(tempchars);                } else {                    for (int i = 0; i < charread; i++) {                        // if (tempchars[i] == '\r') {                        // continue;                        // } else {                        sb.append(tempchars[i]);                        // System.out.print(tempchars[i]);                        // }                    }                }            }            content = sb.toString();        } catch (Exception e1) {            e1.printStackTrace();        } finally {            if (reader != null) {                try {                    reader.close();                } catch (IOException e1) {                }            }        }        return content;    }    /**     * 以行为单位读取文件,常用于读面向行的格式化文件     */    public static void readFileByLines(String fileName) {        File file = new File(fileName);        BufferedReader reader = null;        try {            System.out.println("以行为单位读取文件内容,一次读一整行:");            reader = new BufferedReader(new FileReader(file));            String tempString = null;            int line = 1;            // 一次读入一行,直到读入null为文件结束            while ((tempString = reader.readLine()) != null) {                // 显示行号                System.out.println("line " + line + ": " + tempString);                line++;            }            reader.close();        } catch (IOException e) {            e.printStackTrace();        } finally {            if (reader != null) {                try {                    reader.close();                } catch (IOException e1) {                }            }        }    }    /**     * 随机读取文件内容     */    public static void readFileByRandomAccess(String fileName) {        RandomAccessFile randomFile = null;        try {            System.out.println("随机读取一段文件内容:");            // 打开一个随机访问文件流,按只读方式            randomFile = new RandomAccessFile(fileName, "r");            // 文件长度,字节数            long fileLength = randomFile.length();            // 读文件的起始位置            int beginIndex = (fileLength > 4) ? 4 : 0;            // 将读文件的开始位置移到beginIndex位置。            randomFile.seek(beginIndex);            byte[] bytes = new byte[10];            int byteread = 0;            // 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。            // 将一次读取的字节数赋给byteread            while ((byteread = randomFile.read(bytes)) != -1) {                System.out.write(bytes, 0, byteread);            }        } catch (IOException e) {            e.printStackTrace();        } finally {            if (randomFile != null) {                try {                    randomFile.close();                } catch (IOException e1) {                }            }        }    }    /**     * 显示输入流中还剩的字节数     */    private static void showAvailableBytes(InputStream in) {        try {            System.out.println("当前字节输入流中的字节数为:" + in.available());        } catch (IOException e) {            e.printStackTrace();        }    }    /**     * A方法追加文件:使用RandomAccessFile     */    public static void appendMethodA(String fileName, String content) {        try {            // 打开一个随机访问文件流,按读写方式            RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");            // 文件长度,字节数            long fileLength = randomFile.length();            // 将写文件指针移到文件尾。            randomFile.seek(fileLength);            randomFile.writeBytes(content);            randomFile.close();        } catch (IOException e) {            e.printStackTrace();        }    }    /**     * B方法追加文件:使用FileWriter     */    public static void appendMethodB(String fileName, String content) {        try {            // 打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件            FileWriter writer = new FileWriter(fileName, true);            writer.write(content);            writer.flush();            writer.close();        } catch (IOException e) {            e.printStackTrace();        }    }    public static void main(String[] args) throws IOException {         generalFile();//       updateFile();    }    private static void generalFile() {        String path = "E:/temp/";        String fileName = "CD0030001";        String suffix = ".yaml";        String fullPath = path + fileName + suffix;        String contentTemplate = readFileByChars(fullPath);        String dtermPath = "E:/temp/";        String prefix = "CD0030";        List<Integer> ignoreList = new ArrayList<Integer>();//       ignoreList.add(6);        // ignoreList.add(5);        // ignoreList.add(9);        // ignoreList.add(42);        // ignoreList.add(43);        // ignoreList.add(47);        // ignoreList.add(99);        // ignoreList.add(101);        // ignoreList.add(103);        // ignoreList.add(104);        // ignoreList.add(105);        // ignoreList.add(120);        // ignoreList.add(121);        // ignoreList.add(122);        // ignoreList.add(123);        // ignoreList.add(124);        // ignoreList.add(125);        // ignoreList.add(126);        for (int i = 1; i <= 46; i++) {            if (ignoreList.contains(i)) {                continue;            }            String index = String.format("%03d", i);            String newFileName = prefix + index;            String newFilePath = dtermPath + newFileName + suffix;            // String content =            // contentTemplate.replaceAll("MobileBasicStore.basicInfos[0]",            // "MobileBasicStore.basicInfos");            String content = contentTemplate.replaceAll(fileName, newFileName);            try {                File file = new File(newFilePath);                if (file.exists()) {                    file.delete();                }                file.createNewFile();                appendMethodB(newFilePath, content);                System.out.println(newFileName + "--------------");            } catch (Exception ex) {                System.out.println(newFileName);                ex.printStackTrace();            }        }    }    private static void updateFile() {        String suffix = ".yaml";        String dtermPath = "E:/temp/";        String prefix = "TB0031";        List<Integer> ignoreList = new ArrayList<Integer>();//      ignoreList.add(4);//      ignoreList.add(5);//      ignoreList.add(9);//      ignoreList.add(42);//      ignoreList.add(43);//      ignoreList.add(47);//      ignoreList.add(101);//      ignoreList.add(103);//      ignoreList.add(104);//      ignoreList.add(105);//      ignoreList.add(120);//      ignoreList.add(121);//      ignoreList.add(122);//      ignoreList.add(123);//      ignoreList.add(124);//      ignoreList.add(125);//      ignoreList.add(126);        String newPrefix = "TB0041";        for (int i = 1; i <= 63; i++) {//          if (ignoreList.contains(i)) {//              continue;//          }            String index = String.format("%03d", i);            String newFileName = newPrefix + index;            String oldFileName = prefix+index;//          String oldFilePath = dtermPath + oldFileName + suffix;            String newFilePath = dtermPath + newFileName + suffix;            // String content =            // contentTemplate.replaceAll("MobileBasicStore.basicInfos[0]",            // "MobileBasicStore.basicInfos");            String content = "";            try {                File file = new File(newFilePath);                if (file.exists()) {                    String contentTemplate = readFileByChars(newFilePath);                    content = contentTemplate.replaceAll("TaoBaoInputIndexTB004",                            "TaobaoInputIndexTB004").replaceAll("TB0031", "TB0041");                    file.delete();                }                File newFile = new File(newFileName);                if(newFile.exists()){                    newFile.delete();                }                newFile.createNewFile();                appendMethodB(newFilePath, content);                System.out.println(newFileName + "--------------");            } catch (Exception ex) {                System.out.println(newFileName);                ex.printStackTrace();            }        }    }}
0 0
原创粉丝点击