gpt4 book ai didi

JavaParser 不更新源文件

转载 作者:行者123 更新时间:2023-11-29 04:41:52 25 4
gpt4 key购买 nike

我正在使用 JavaParser并关注其 Wiki。问题是即使我更改了方法的名称并向其添加了参数,文件也没有更新。换句话说,不会保存更改。当我 System.out.println 更改后的 CompilationUnit 时,它会打印出更改,但这些更改根本不会影响源文件。

是否有类似 CompilationUnit.update() 的东西,还是我遗漏了什么?

我从 Wiki 使用的示例:

    files_list = FilePicker.chooseAndGetJavaFiles();

if (files_list == null || files_list.isEmpty()) {
Errors.showError(Errors.COMMENT_GENERATOR_FILELIST_NULL_OR_EMPTY);
} else {

CompilationUnit cu = null;
FileInputStream in = new FileInputStream(files_list.get(0));
try {
cu = JavaParser.parse(in);
} catch (ParseException ex) {
Logger.getLogger(CommentGenerator.class.getName()).log(Level.SEVERE, null, ex);
} finally{
in.close();
}
new MethodChangerVisitor().visit(cu,null);

System.out.println(cu.toString());
}
}

private static class MethodChangerVisitor extends VoidVisitorAdapter{

@Override
public void visit(MethodDeclaration n, Object arg) {
// change the name of the method to upper case
n.setName(n.getName().toUpperCase());

// create the new parameter
Parameter newArg = ASTHelper.createParameter(ASTHelper.INT_TYPE, "value");

// add the parameter to the method
ASTHelper.addParameter(n, newArg);

}


}

编辑:这是解决方案;添加下行;

Files.write(new File("Modified.java").toPath(), cu.toString(), StandardCharsets.UTF_8);

更改下线以使用特殊字符(例如“ş,ö,ü ...)

cu = JavaParser.parse(files_list.get(0));

cu = JavaParser.parse(files_list.get(0),"UTF-8");

最佳答案

既然你已经有了字符串表示,那么这个呢:

Files.write(new File("Modified.java").toPath(), cu.toString(), StandardCharsets.UTF_8);

关于JavaParser 不更新源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38881876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com