思路:
java读写文件是不能插入内容到文件中的。
解决办法
1.把要插入的文件按行读取,加入到stringbuffer中,并加入换行符号。
2.到了指定位置复制位置行的前半部分到stringbuffer。
3.插入换行,插入内容,插入换行到stringbuffer。
4.复制后半部分,一直到结束。
5.将stringbuffer覆盖源文件。
部分代码
/**
*
* @param path
* @param buffer 要插入的内容
* @return
*/
private String join(String path,StringBuffer buffer){
//拼接字符
File javaFile = new File(path);
try {
System.out.println(javaFile.exists());
CompilationUnit cu = StaticJavaParser.parse(javaFile);
String name1 = FileUtil.getName(javaFile);
String shortName = name1.split("\\.")[0];
//加入点的位置
Position position = 自行实现;
StringBuilder sb = new StringBuilder();
// 源文件
List<String> lines = Files.readAllLines(Paths.get(path), StandardCharsets.UTF_8);
for (int i = 0; i < lines.size(); i++) {
String s = lines.get(i);
//类结束行 position 第一行是1
if (i == position.line - 1) {
String start = s.substring(0, position.column - 1);
String endstr = s.substring(position.column - 1, s.length());
sb.append(start);
sb.append("\n");
sb.append(buffer);
sb.append("\n");
sb.append(endstr);
sb.append("\n");
}else{
sb.append(s);
sb.append("\n");
}
}
System.out.println(sb);
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
这是我软件中的一个小功能,用于一次性同时插入一个方法到dao层,service层以及他们的实现类里面。
软件详情 www.saoft.com了解更多。