package com.ftssyang; /** * @Title: CreateToString.java * @Package * @Description: 根据包路径自动创建bean ToString()方法 * @author yanggq * @CreateDate 2016年1月26日 下午2:21:49 * @ModifiedPerson * @UpdateDate 2016年1月26日 下午2:21:49 * @version V1.0 */ import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; /** * @ClassName: CreateToString * @Description: 创建toString 方法 * @author yanggq * @date 2016年1月26日 下午2:21:49 * */ public class CreateToString { /** * 定义所有要修改的javabean集合 */ private static List<String> filelist = new ArrayList<String>(); /** * 添加绝对路径所需部分路劲 */ private static final String PATH_APPEND = "\\src\\main\\java\\"; /** * 扫描包 */ private static String PACKAGE_PATH = "com.hyh"; /** * 匹配类型 */ private static final String FILE_TYPE = ".java"; /** * 父类类型 */ private static final String SUPER_CLASS = "GenericEntity"; /** * 是否含有toString 方法标志 */ private static final String EXCEPT = "serialVersionUID"; /** * 是否含有toString 方法标志 */ private static final String FLAG = "public String toString() {"; /** * * @Title: readLine * @Description: 按行读取文件 * @param @return * @param @throws IOException 方法参数 * @return String 返回类型 * @throws 异常信息 */ private static StringBuilder readFile(String pathAndName) throws IOException { boolean contentFlag = false; StringBuilder sb = new StringBuilder(""); ArrayListRemove<String> list=new ArrayListRemove<String>(); FileReader reader = new FileReader(pathAndName); BufferedReader br = new BufferedReader(reader); String str = null; int mark=0; int startMark=0; int endMark=0; int end=0; while ((str = br.readLine()) != null) { if (str.trim().equals(FLAG)) { contentFlag = true; if(list.get(mark-1).contains("@Override")){ startMark=mark-1; }else{ startMark=mark; } } sb.append(str + "\n"); list.add(str + "\n"); mark++; } for(int i=startMark;i<list.size();i++){ if (list.get(i).contains("return")) { endMark=i; } if(endMark>0&&list.get(i).contains("}")){ endMark=i; break; } // if(endMark>0&&!list.get(i).trim().equals("")){ // endMark=i; // } } br.close(); reader.close(); StringBuilder returnSb = null; if (!contentFlag) { returnSb = new StringBuilder(sb.reverse().toString().trim().replaceFirst("}", "").trim()).reverse(); } else { list.removeRange(startMark,endMark+1); sb=new StringBuilder(""); for(String listVar:list){ sb.append(listVar); } returnSb = new StringBuilder(sb.reverse().toString().trim().replaceFirst("}", "").trim()).reverse(); } return returnSb; } /** * * @Title: readLine * @Description: 按行读取文件 * @param @return * @param @throws IOException 方法参数 * @return String 返回类型 * @throws 异常信息 */ private static StringBuilder readFile2(String pathAndName) throws IOException { boolean contentFlag = false; StringBuilder sb = new StringBuilder(""); List<String> list=new ArrayList<String>(); FileReader reader = new FileReader(pathAndName); BufferedReader br = new BufferedReader(reader); String str = null; while ((str = br.readLine()) != null) { sb.append(str + "\n"); list.add(str + "\n"); } br.close(); reader.close(); StringBuilder returnSb = null; if (!contentFlag) { returnSb = new StringBuilder(sb.reverse().toString().replaceFirst("}", "").trim()).reverse(); } else { returnSb = new StringBuilder(sb.reverse().toString().replaceFirst("edirrevO@", "").trim()).reverse(); } return returnSb; } /** * * @Title: writeFile * @Description: 写入文件 * @param @param pathAndName * @param @param content * @param @throws IOException 方法参数 * @return void 返回类型 * @throws 异常信息 */ private static void writeFile(String pathAndName, String content) throws IOException { FileWriter writer = new FileWriter(pathAndName); BufferedWriter bw = new BufferedWriter(writer); bw.write(content); bw.close(); writer.close(); } /** * * @Title: toString * @Description: 反射生成文件的toString 方法 * @param @param pathAndName * @param @param content * @param @throws IOException 方法参数 * @return void 返回类型 * @throws ClassNotFoundException * @throws 异常信息 */ private static StringBuilder toString(String pathAndName) throws ClassNotFoundException { StringBuilder sbType = new StringBuilder(); StringBuilder sbValue = new StringBuilder(); sbType.append("\n\n"); sbType.append("\t@Override\n"); sbType.append("\t" + FLAG + "\n\n"); Class<?> classAllName = Class.forName((pathAndName.substring( pathAndName.indexOf(PATH_APPEND) + PATH_APPEND.length(), pathAndName.indexOf(FILE_TYPE))).replace("\\", ".")); sbType.append("\t\treturn String\n"); // sbType.append("\t\t\t.format(\"" + classAllName.getSimpleName() + // " ["); sbType.append("\t\t\t.format(\"" + classAllName.toString() + " ["); Class<?> superClass = classAllName.getSuperclass(); Field[] superFields = superClass.getDeclaredFields(); if (superClass.getSimpleName().equals(SUPER_CLASS)) { for (int i = 0; i < superFields.length; i++) { if (superFields[i].getName().equals(EXCEPT) || superFields[i].getName().equals("DATE_FORMAT") || superFields[i].getName().equals("HASHCODEERROR") || superFields[i].getName().equals("LINK_CHAR") || superFields[i].getName().equals(EXCEPT) || superFields[i].getName().equals(EXCEPT)) { continue; } sbType.append(superFields[i].getName() + "=%s,"); sbValue.append("get" + toUpperCaseFirstOne(superFields[i].getName()) + "(),"); } } Field[] fields = classAllName.getDeclaredFields(); for (int j = 0; j < fields.length; j++) { if (fields[j].getName().equals(EXCEPT)) { continue; } if (j == fields.length - 1) { sbType.append(fields[j].getName() + "=%s"); sbValue.append(fields[j].getName() + ");"); } else { sbType.append(fields[j].getName() + "=%s,"); sbValue.append(fields[j].getName() + ","); } } sbType.append("]\",\n"); sbType.append("\t\t\t\t" + sbValue + "\n\n"); sbType.append("\t}\n\n"); sbType.append("}"); return sbType; } /** * * @Title: getFiles * @Description: 通过递归得到某一路径下所有的目录及其文件 * @param @param filePath 方法参数 * @return void 返回类型 * @throws 异常信息 */ private static void getFiles(String filePath) { File root = new File(filePath); File[] files = root.listFiles(); for (File file : files) { if (file.isDirectory()) { getFiles(file.getAbsolutePath()); } else { if (file.getName().endsWith(FILE_TYPE)) { filelist.add(file.getAbsolutePath()); } } } } /** * * @Title: create * @Description: 通过文件路径生成 * @param @param projectDir * @param @throws IOException 方法参数 * @return void 返回类型 * @throws ClassNotFoundException * @throws 异常信息 */ private static void create(String projectDir) throws IOException, ClassNotFoundException { getFiles(projectDir + PATH_APPEND + PACKAGE_PATH.replace(".", "\\") + "\\"); StringBuilder fileContent = new StringBuilder(); for (String files : filelist) { fileContent = readFile(files); fileContent.append(toString(files)); writeFile(files, fileContent.toString()); } } /** * * @Title: toLowerCaseFirstOne * @Description: 首字母转小写 * @param @param s * @param @return 方法参数 * @return String 返回类型 * @throws 异常信息 */ private static String toLowerCaseFirstOne(String s) { if (Character.isLowerCase(s.charAt(0))) return s; else return (new StringBuilder()).append(Character.toLowerCase(s.charAt(0))).append(s.substring(1)).toString(); } /** * * @Title: toUpperCaseFirstOne * @Description: 首字母转大写 * @param @param s * @param @return 方法参数 * @return String 返回类型 * @throws 异常信息 */ private static String toUpperCaseFirstOne(String s) { if (Character.isUpperCase(s.charAt(0))) return s; else return (new StringBuilder()).append(Character.toUpperCase(s.charAt(0))).append(s.substring(1)).toString(); } static class ArrayListRemove<E> extends ArrayList<E>{ public boolean contains(Object o) { return super.contains(o); } public void removeRange(int fromIndex, int toIndex) { super.removeRange(fromIndex,toIndex); } } public static void main(String[] args) { String projectDir = System.getProperty("user.dir"); try { create(projectDir); } catch (Exception e) { System.out.println("创建ToString方法失败"); } } }
最近下载更多
最近浏览更多
maozexi LV7
2021年11月30日
zhangzhigang LV2
2021年3月5日
Misshuang LV13
2020年6月9日
打手犯规了 LV1
2019年9月5日
Kira9277
2019年9月4日
暂无贡献等级
chenmsrong LV9
2019年1月28日
1247879478 LV8
2018年11月21日
拉不下553016 LV1
2018年6月7日
583531906 LV1
2018年5月4日
springmvc--stu LV5
2018年3月28日