简单说,下面是一段JAVA源文件中的内容://a
public void getA(){
}
//b
public void getB(){
}我想用一个输出流,可以在"//a"处写入,也可以跳到"//b"处写入。
目的是想在原有的代码文件的标记处追加新的代码,并保留标记,方便下次继续追加代码。
有这样的流么?或者什么解决方案,大家能提供一下么?
public void getA(){
}
//b
public void getB(){
}我想用一个输出流,可以在"//a"处写入,也可以跳到"//b"处写入。
目的是想在原有的代码文件的标记处追加新的代码,并保留标记,方便下次继续追加代码。
有这样的流么?或者什么解决方案,大家能提供一下么?
先用输入流,从源文件中读取代码,将读取的代码添加到一个StringBuilder中,当读到标记处,例如"//a"时,将现在需要追加的代码+标记"//a"添加到StringBuilder中,然后读取剩余的代码。最后将StringBuilder中的内容输出到该文件(对原有文件进行覆盖)
不知道可以不
File f = new File("F:/T.java");
if( f.exists() ){
FileInputStream inStream = new FileInputStream (f);
InputStreamReader inReader = new InputStreamReader(inStream);
BufferedReader bufferedReader = new BufferedReader(inReader);
int start = 0;
StringBuffer strBuf = null;
char[] chars = null;
String writerStr = "描述";
String findStr = "//a";
try{
strBuf = new StringBuffer();
for( String str = null ; (str = bufferedReader.readLine()) != null ; ){
strBuf.append(str + "\n");
}
start = strBuf.indexOf(findStr);
strBuf.insert(start + findStr.length(), writerStr);
}catch( Exception e ){
e.printStackTrace();
}finally{
inReader.close();
} if( start > 0) {
FileOutputStream outStream = new FileOutputStream(f);
OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
try{
;
outWriter.write(strBuf.toString());
}catch( Exception e ){
e.printStackTrace();
}finally{
outWriter.close();
}
}
}