求教:java对文件操作,如何在文件中指定位置插入一些内容
如:
public class Test{
  public void test_1(){
           ......
    }
  public String test_2(...){
         插入相关内容
   }
}

解决方案 »

  1.   

    你的目的
    1、批量插入逻辑实现类似权限检查等
       解决:你不用插入用AOP相关技术
    2、你想批量重构代码
       解决:
       基本的:用流读入文件,用正则表达式匹配到插入点,插入逻辑并写回原文件。
       高级点用:eclipse的语法树。
      

  2.   

    第二点可以具体些吗?谢谢...初学java,请赐教
      

  3.   

    你批量重构代码?初学?!
    不过你的精神请令人敬佩的。那我就较为详细点来说吧。
    基本的:
        你通过文件流将java文件读入到内存中,然后用正则表达式匹配到插入点,插入逻辑,将结果写会文件就好了。
      什么?你要代码?不好意思,这个我真没有现成的。你问百大叔要,要不谷老师那里也有。
    高级点的:
       有没有想过eclipse是如何帮助你完成get set方法的,如何在你修改一个类名,其他的类名全部变化的?
    这就是eclipse JDT完成的,相关的如jet可以自动生成代码,ast可以构建抽象语法树,这个可以帮助你完成你要的功能。
    ast本身不是很复杂。但是网上的资料比较少。我以前在给公司写代码生成工具的时候用过,具体主要是看api。它提供了诸如获得某个方法,获得某个方法下的循环语句,等等都有api可以用,让你如同操作Dom一样操作java源文件。
    不过你初学,就知道有这么个事就行了。等你牛了再研究吧。
        
      

  4.   

    package ds;import java.io.*;public class ReadWriteFile{
     public static void main(String[] args){
      try{
       
       File read = new File("3.txt");
       File write = new File("4.txt");
       
       BufferedReader br = new BufferedReader(
             new FileReader(read));
       BufferedWriter bw = new BufferedWriter(
             new FileWriter(write));
       String temp = null;
       temp = br.readLine();
       while(temp != null){
       temp = temp.trim();
      
       temp = temp.replaceAll("[\\u4e00-\\u9fa5]", "");
       temp = temp.replaceAll(" ", "\r\n");
       
       
        //写文件
        bw.write("if(a.tel.contains(\""+temp +"\")){\r\n a.fromPlace=null;\r\na.toPlace = null;\r\n}\r\n"); //只适用Windows系统
        //继续读文件
        temp = br.readLine();
       }
       
       
       
       bw.close();
       br.close();
       
      }catch(FileNotFoundException e){ //文件未找到
       System.out.println (e);
      }catch(IOException e){
       System.out.println (e);
      } 
     } 
    }
      

  5.   


    String devfilepath = workPath + File.separator + "group1"
    + File.separator + "scenario1" + File.separator
    + "device_test.dev";
    StringBuffer sb = new StringBuffer();
    BufferedReader in = null;
    try {
    in = new BufferedReader(new FileReader(devfilepath));
    String line = null;
    while ((line = in.readLine()) != null) {
    sb.append(line + '\n');
    }
    } finally {
    if (in != null) {
    in.close();
    }
    }
    String needStr = "<include file=\"filename1\"";
    int startindex = sb.indexOf(needStr);
    // 输入内容
    String outStr = "<include file=\"myfile.cpp\"";
    sb.replace(startindex, startindex+needStr.length(), outStr);
    FileWriter f = new FileWriter(new File(devfilepath));
    f.write(sb.toString());
    f.flush();
    f.close();