我有段代码如下:FileReader reader = null;

FileWriter fw = null;
File file = new File("e:\\abc.txt");
try {
StringBuffer sb = new StringBuffer();
reader = new FileReader(file);
int len = 0;
fw = new FileWriter("e:\\a.txt");

while(true){
len = reader.read();
if(len==-1)
break;
sb.append((char)len);

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

fw.write(sb.toString());
System.out.println("文件复制成功!");
} catch (FileNotFoundException e) {
System.out.println("没有该文件!");
e.printStackTrace();
} catch (IOException e) {
System.out.println("文件读写异常!");
e.printStackTrace();
}finally{
try {

reader.close();
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}abc.txt的内容是:
hello world;
{
i am lynn;
}
复制到a.txt下也是
hello world;
{
i am lynn;
}
我现在想的是怎么让复制后的内容每行都对齐 达到以下效果
hello world;
{
i am lynn;
}
StringBuffer能够动态去掉制表符 或者空格吗?谢谢 

解决方案 »

  1.   

    内容里i am lynn前面是有空格的 
      

  2.   

    建议你一行一行的读出来(使用BufferedReader的readLine()),然后去掉每行开头的空格和制表符要简单一些,你这样一个个字符读出来不好处理。
      

  3.   

    BufferedReader 怎么读,没用过 我只能读取第一行的 后面 读不出来
      

  4.   


    public static void main(String[] args) {
    FileReader reader = null;
            FileWriter fw = null;
            File file = new File("e:\\abc.txt");
            try {
                String sb = null;
                reader = new FileReader(file);
                fw = new FileWriter("e:\\a.txt");
                BufferedReader br = new BufferedReader(reader);
                BufferedWriter bw = new BufferedWriter(fw);
                while((sb = br.readLine()) != null){
                 bw.write(sb.replaceFirst("^\\s?", ""));
                 bw.newLine();
                }
                br.close();
                bw.close();
                System.out.println("文件复制成功!");
            } catch (FileNotFoundException e) {
                System.out.println("没有该文件!");
                e.printStackTrace();
            } catch (IOException e) {
                System.out.println("文件读写异常!");
                e.printStackTrace();
            }
    }
      

  5.   

    bw.write(sb.replaceFirst("^\\s?", ""));
    ?号换成+号
      

  6.   

     InputStreamReader inputReader = null;
            BufferedReader bufferReader = null;
            OutputStream outputStream = null;
            try
            {
                InputStream inputStream = new FileInputStream(file );
                inputReader = new InputStreamReader(inputStream);
                bufferReader = new BufferedReader(inputReader);
                
                // 读取一行
                String line = null;
                StringBuffer strBuffer = new StringBuffer();
                String newLine = "\n";
                //逐行读取
                while ((line = bufferReader.readLine()) != null)
                {
                    
                    if (...){
                        String str = "...";
                        strBuffer.append(str);
                        strBuffer.append(newLine);
                    }
                                   
                }
                outputStream = new FileOutputStream(写入的文件);
                outputStream.write(strBuffer.toString().getBytes());
                
            }
            catch (IOException e)
            {
                LOG.error(e.getMessage());
            }
            finally
            {
                OtherUtilAPI.closeAll(outputStream, bufferReader, inputReader);
            }