我需要读去一个文本文件,然后把文件每一行的第25~30个字符设为#号,然后把每一行都输出到另外一个文件当中while((String s1=in.readLine())!=null)
{
s1 转换为 char 数组;
for 循环 
  {
    数组第25~30个设#号; 
   } 
char 数组 转换为 String s2;
输出 s2;
}
有没有比这更好的方法呢?
特别想优化一下那转换过程

解决方案 »

  1.   

    StringBuffer类有一个setcharat()方法。
      

  2.   

    1:减少IO次数
    如果你的文件操作不是很大,可以把文件读入内存中并添加#号后再一起写入文件
    或者读到一定量后再写入,不要每行写一次。这样会提高速度2:string操作
    for(int i=25;i<30 && i<chars.length;i++)
    {
        chars[i]='#';
    }
      

  3.   

    //FileTrans.javaimport java.io.*;public class FileTrans {
    public static void main(String[] args) throws IOException {
    if (args.length < 2) {
    System.out.println("You must specify source and destination text file.");
    return;
    }
    File fi = new File(args[0]);
    File fo = new File(args[1]);
    BufferedReader reader = new BufferedReader(new FileReader(fi));
    BufferedWriter writer = new BufferedWriter(new FileWriter(fo));
    int ch = -1;
    int cnt = 0;
    try {
    while ((ch = reader.read()) >= 0) {
    cnt ++;
    if (ch == '\r' || ch == '\n')
    cnt = 0;
    if (cnt >= 25 && cnt <= 30) {
    writer.write('#');
    } else {
    writer.write(ch);
    }
    }
    } finally {
    reader.close();
    writer.close();
    }
    }
    }
      

  4.   

    同意fool_leave的说法,忖道stringbuffer中减少io的操作次数,这样可以显著的提高读写的效率