求助,想从“E:\\1.txt”文件判断是否有'张三'的名字,有的话就写到“E:\\2.txt”内
用java怎么实现啊?
请各位指导!!!!!!!!!!!
import java.io.*;
public class kaoshi  
{
public static void main(String[] args) //throws IOException
{
// TODO Auto-generated method stub
try
{
File f1=new File("E:\\1.txt");
File f2=new File("E:\\2.txt");
FileReader reader1=new FileReader(f1);
FileWriter write1=new FileWriter(f2);
char buffer[]=new char[30];
char buffer1[]=new char[30];
//char buffer1[]=new char[20];reader1.read(buffer);
String str;
System.out.println(buffer);
//while()
for(int i=0;i<f1.length();i++)
{
if(buffer[i]=='张')
{
//buffer1[i]=buffer[i];
//buffer1[i+1]=buffer[i+1];
//write1.write(buffer1,0,2);
//System.out.println(buffer1);
str=new String(buffer,0,2);
write1.write(str,0,30);
}}
reader1.close();
write1.close();
//write1.close();
}
catch(IOException e)
{
System.out.println("出现异常");
}
}}
这个程序是有问题的,请大家在这个基础上改进一下!!!!!!!!!
感激不尽...........

解决方案 »

  1.   


    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;public class kaoshi{ public static void main(String[] args){
    File f1=new File("E:\\1.txt");
    File f2=new File("E:\\2.txt");
    try{
    BufferedReader reader1=new BufferedReader(new FileReader(f1));
    try{
    FileWriter write1=new FileWriter(f2);
    try{
    String line=null;
    while((line=reader1.readLine())!=null){
    if(line.indexOf("张三")>=0){
    write1.write(line+"\r\n");
    }
    }
    }
    finally{
    write1.close();
    }
    }
    finally{
    reader1.close();
    }
    }
    catch(IOException e){
    System.out.println("出现异常");
    }
    }
    }
      

  2.   

    LZ把需求说清楚点,你1.txt的内容格式和往2.txt中写的内容
      

  3.   

    就是如果有“张三”这个名字的话,就把“张三”这个名字写到“E:\\2.txt”
      

  4.   

    好像还不行啊 把1.txt的内容全写进去啦,我的意思是把“张三”两个字写进2.txt去~~~~~~~~~~请楼主指点啊~~~~~~~~~~~  
      

  5.   

    1L的却是可以满足你的要求。但我觉得要稍微改下能更符合要求! write1.write("张三"+"\r\n");
    另外,请1L的大虾解释下 finally 和catch可以这么放么,第一次见这么放的!
    菜鸟飘过,拿10分
      

  6.   

    那就把这段改一下:
    if(line.indexOf("张三")>=0){
        write1.write(line+"\r\n");
    }
    改为:
    if(line.indexOf("张三")>=0){
        write1.write("张三\r\n");
    }
      

  7.   

    1)这里是多层嵌套的try结构;
    2)try不一定要catch,也可以跟finally
    3)这样做可以保证reader1 和 write1 都可以被正常close,就算里面发生异常也可以
      

  8.   

    如果你是想把1.txt里的内容全部写到2.txt啊,1L的就可以了,如果是想把所有的张三写到2.txt中的话,就是这样:package test.test;import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;public class kaoshi { public static void main(String[] args) {
    String zhangsan = "张三";
    File f1 = new File("D:\\1.txt");
    File f2 = new File("D:\\2.txt");
    BufferedReader reader1 = null;
    FileWriter write1 = null;
    try {
    reader1 = new BufferedReader(new FileReader(f1)); write1 = new FileWriter(f2); String line = null;
    String temp = "";
    while ((line = reader1.readLine()) != null) {
    for (int i = 0; i < line.length(); i++) {
    if (line.indexOf(zhangsan) != -1) {
    line = line.substring(line.indexOf(zhangsan) + 1, line
    .length());
    temp += zhangsan + "|";
    // write1.write(line + "\r\n");
    }
    } }
    write1.write(temp);
    } catch (IOException e) {
    System.out.println("出现异常");
    } finally {
    try {
    reader1.close();
    write1.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } }
    }
    }
      

  9.   

    其实一楼的程序就已经满足要求了
    但是需要改进一下:
    1.catch的前面需要加上write1.flush,将内存最后的数据写入,要不然有可能最后的值未写
    2.在finally中关闭流时,需要进行是否为null的判断
      

  10.   

       有BUG 吧! 如果“张三”不在一行上呢?