当前位置: 代码迷 >> J2EE >> java文件操作,一个类似占位的功能,前辈应该怎么实现
  详细解决方案

java文件操作,一个类似占位的功能,前辈应该怎么实现

热度:49   发布时间:2016-04-17 23:27:37.0
java文件操作,一个类似占位的功能,请教各位前辈应该如何实现。
本帖最后由 lhxaiee123 于 2014-12-09 09:09:15 编辑
比如说在struts2框架下,我的action从前台页面接受到某个值,在action中做了该值的条件判断以后。
系统自动在另外一个.java文件中所有代码的某个位置(如匹配字符‘testStart’与‘testEnd’之间)写入一行代码。

举个栗子:
public String test(){
String aaa = getRequest().getParameter("para");
if(aaa.equals("bbb")){
String add = "I want to add the text";
//接下来我该怎么样把字符串add通过系统的文件操作
//自动写入.../test.java文件中的某个占位里
}
return "aaa";
}


将add写入.../test.java中:
public String test(){
testStart
//I want to add the text写入这里
endStart
return "ccc";
}


有办法实现这样的效果吗?
------解决思路----------------------
有的,spring的aop(动态代理),你可以看下
------解决思路----------------------
如果想有效率一点 使用RandomAccessFile记录游标进行写入
------解决思路----------------------
如果这个指定文件是java源码,你写完肯定想编译。
文件可以全部读进内存,操作完字符串整体写回。
编译可以用Runtime类调命令行编译器。
调用可以Class.forName取得Instance然后反射调用预定接口
------解决思路----------------------
原始设计就不够好,为什么不用jvm支持的脚本语言来做,Jython或groovy?

import groovy.lang.GroovyShell;

    
    Binding binding = newBinding();  
    //传递参数  
    binding.setVariable("x",10);  
     binding.setVariable("language", "Groovy");  
      GroovyShell shell = newGroovyShell(binding);  
    //调用,返回值为10  
    Object value =shell.evaluate  
        ("println\"Welcome to $language\"; y = x * 2; z = x * 3; return x ");  
      

  相关解决方案