请高手帮我详细的解释一下,最好帮我注释一下
import java.io.*;
public class FileOperator {
    public static void main(String[] args) {
        try {
            
            String search = "csdn";
            File file = new File("d:\\directory");
            File[] list = file.listFiles();
            
            for (File f:list) {
                BufferedReader reader = new BufferedReader(new FileReader(f));
                String str = reader.readLine();
                
                while (str != null) {
                    if (str.indexOf(search)>=0) {
                        reader.close();
                        f.renameTo(new File("d:\\toDirectory\\"+f.getName()));
                        System.out.println(f+"被发现含有"+search+",被移动...");
                        break;
                    }
                    
                    str = reader.readLine();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

解决方案 »

  1.   

    public   class   FileOperator   {         //主运行方法
            public   static   void   main(String[]   args)   { 
                    try   { 
                            
                            String   search   =   "csdn"; //定义字符查询变量
                            File   file   =   new   File("d:\\directory"); //获取文件夹路径
                            File[]   list   =   file.listFiles(); //获取文件列表
                            
                            for   (File   f:list)   { //循环获取文件列表中的文件
                                    BufferedReader   reader   =   new   BufferedReader(new   FileReader(f)); //定义文件输入流用来读取文件
                                    String   str   =   reader.readLine(); //读取文件一行字符串
                                    
                                    while   (str   !=   null)   { //如果读入的不为空
                                            if   (str.indexOf(search)> =0)   { //如果该行字符串能匹配"csdn"; 
                                                    reader.close(); //关闭文件输入流
                                                    f.renameTo(new   File("d:\\toDirectory\\"+f.getName())); //重命名文件
                                                    System.out.println(f+"被发现含有"+search+",被移动..."); 
                                                    break; //退出循环
                                            } 
                                            
                                            str   =   reader.readLine(); //继续读取文件
                                    } 
                            } 
                    }   catch   (Exception   e)   { 
                            e.printStackTrace(); 
                    } 
            } 

      

  2.   

    我写的 还是我自己来写注释吧:
    import   java.io.*; 
    public   class   FileOperator   { 
            public   static   void   main(String[]   args)   { 
                    try   { 
                            
                            String   search   =   "csdn";  //定义要查询的字符串为csdn
                            File   file   =   new   File("d:\\directory");  //构造File类的对象 这里是一个目录。
                            File[]   list   =   file.listFiles();  //得到上面定义的那个目录里的所有文件的数组 通过listFiles方法就可以
                            
                            for   (File   f:list)   {  //for each循环  循环list数组里的每个元素
                                    BufferedReader   reader   =   new   BufferedReader(new   FileReader(f));  //能每个文件来构造输入流。
                                    String   str   =   reader.readLine();  //从流里读入一行字符串
                                    
                                    while   (str   !=   null)   { //如果读取到的字符串不为空 就进入循环 
                                            if   (str.indexOf(search)> =0)   {  //检测str里 是否包含csdn 如果包含
                                                    reader.close(); //把流关掉
                                                    f.renameTo(new   File("d:\\toDirectory\\"+f.getName()));  //把这个文件剪切到另一个toDirectory目录里
                                                    System.out.println(f+"被发现含有"+search+",被移动...");  
                                                    break;  ///因为已经确定这个文件里包含csdn。所以不用再对这个文件进行循环读取  这里退出循环。
                                            } 
                                            
                                            str   =   reader.readLine();  //如果上面的if结果为false 也就是读取到的字符串里不包含csdn这个字符串 就接着读取下一行
                                    } 
                            } 
                    }   catch   (Exception   e)   { 
                            e.printStackTrace(); 
                    } 
            }