java文件操作

来源:互联网 发布:linux wc l 少一行 编辑:程序博客网 时间:2024/05/16 06:44

文件操作有很多,创建,删除等操作,这些就不说了,我就把自己练习的几个附上吧。

A列出指定目录的全部文件

Java代码  收藏代码
  1. public class FileTest {  
  2.   
  3.     /** 
  4.      * 列出给定目录的全部文件 
  5.      */  
  6.     public static void main(String[] args) {  
  7.           File f=new File("f:"+File.separator);  
  8.           String str[]=f.list();  
  9.           for(int i=0;i<str.length;i++){  
  10.               System.out.println(str[i]);  
  11.           }  
  12.     }  
  13. }  

 list()方法,这个还真不是只看就成,必须练一下手,这才记得深啊。

B列出一个目录中的全部内容

Java代码  收藏代码
  1. import java.io.File;  
  2.   
  3. public class FileDemo1 {  
  4.   
  5.     /** 
  6.      * @param args 
  7.      */  
  8.     public static void main(String[] args) {  
  9.            File f=new File("e:"+File.separator);  
  10.            File files[]=f.listFiles();  
  11.            for(int i=0;i<files.length;i++){  
  12.                System.out.println(files[i]);  
  13.            }  
  14.     }  
  15. }  

 

C判断给定路径是否为目录

Java代码  收藏代码
  1. import java.io.File;  
  2.   
  3. public class FileDemo2 {  
  4.   
  5.     /** 
  6.      * 判定一个给定的路径是否是目录 
  7.      */  
  8.     public static void main(String[] args) {  
  9.                File f=new File("e:"+File.separator);  
  10.                if(f.isDirectory()){  
  11.                    System.out.println(f.getPath()+"路径是目录");  
  12.                }else{  
  13.                    System.out.println(f.getPath()+"路径不是目录");  
  14.                }  
  15.     }  
  16. }  

下面是文件搜索器:

上传图片一张:在下面哈。。。

这是我做的简单的文件搜索器界面,还没有界面美化,添加了滚动条,还没有计数的框框,只是简单地把文件搜索和界面连接在一起了。

最花费时间的部分不是界面,也不是文件搜索,而是连接在一起。我当时的思路是:

第一步:搞定文件搜索

第二步:初始化界面

第三步:监听器(匿名内部类)

第四步:怎样把它们联系在一起

有几点:1.最开始的打印出路径的方法search()是在主函数中调用的,那现在想一按“查找”这个按钮,才会在下面的JTextArea区域中显示出所有的路径,所以要在监听器匿名内部类的方法中调用search()方法,代码如下:

Java代码  收藏代码
  1. ActionListener al=new ActionListener(){  
  2.   
  3.     public void actionPerformed(ActionEvent e) {  
  4.          str1=jtf.getText();  
  5.          str2=jtd.getText();  
  6.         int count= fs.search(str1, str2);  
  7.          if(arrayList==null&&arrayList.size()==0){  
  8.              jta.append("您查找的文件不存在!\n");  
  9.              System.out.println("您查找的文件不存在!");  
  10.          }else{  
  11.              for(int i=0;i<arrayList.size();i++){  
  12.                  jta.append("文件"+arrayList.get(i)+"\n");  
  13.              }  
  14.          }  
  15. a.append("总数为"+count);  
  16.      System.out.println("总数:"+count);  
  17.     }  
  18.       };          

2文件搜索单独定义一个类:

Java代码  收藏代码
  1. public class FileSearch {  
  2.     //定义一个arrayList对象  
  3.     private ArrayList<String> arrayList=new ArrayList<String>();  
  4.       private String str2;  
  5.     private String str1;  
  6.        //构造函数传参数  
  7.     public  FileSearch(ArrayList<String> arrayList,String str2,String str1){  
  8.         this.arrayList=arrayList;  
  9.         this.str1=str1;  
  10.         this.str2=str2;  
  11. }  
  12.     public int search(String str1,String str2){  
  13.        
  14.           int count=0;  
  15.           File fl=new File(str1);  
  16.           File [] file=fl.listFiles();//列出目录  
  17.           if(null==file||file.length==0){  
  18.               return 0;  
  19.           }  
  20.           for(int i=0;i<file.length;i++){  
  21.               if(file[i].isDirectory()){  
  22.                     
  23.                   String filemingzi=file[i].getAbsolutePath();  
  24.  count+=search(filemingzi,str2);  
  25.               }  
  26.               if(file[i].isFile()){  
  27.                     
  28.                   String subDir=file[i].getAbsolutePath();  
  29.                                                 //如果文件与查找的文件名相同,就把路径添加到队列中  
Java代码  收藏代码
  1.                   if(subDir.indexOf(str2)>=0){  
  2.                       count++;  
  3.                       arrayList.add(subDir);  
  4.                   }  
  5. //                System.out.println("文件:"+subDir);  
  6. //                jta.append(file[i].toString()+"\r\n");  
  7.                    }  
  8.                 
  9.               }  
  10.         return count;  
  11.         }  
  12.     }  

 在这里用了List接口中最常用的ArrayList数组集合,我觉得当时很傻的,想用队列去存储所有的路径,又要增加一个类。并且,上几节课刚学完集合框架,当时还想学这个干嘛,不知道什么时候用的说,结果这果真就联系上了,非常好用。

3JTextArea,嘿,我不会告诉你,我不知道JTextArea有append()方法,当时还用了JOptionPane.showMessageDialog(),结果每一条信息弹出一个对话框,电脑差点崩溃了。。。
4初始化界面:

Java代码  收藏代码
  1. public class FileCarry extends JFrame{  
  2. static String str1;  
  3. String str2;  
  4. JTextField   jtf;  
  5. JTextField jtd;  
  6. static JTextArea jta;  
  7. FileSearch fs;  
  8. //File [] file;  
  9. String array[];  
  10. private int i;  
  11. private ArrayList<String> arrayList=new ArrayList<String>();  
  12. // FileSearch fs;  
  13.     /**  
  14.                  * @param args 
  15.      */  
  16.     public static void main(String[] args) {  
  17.              
  18.           FileCarry fc=new FileCarry();  
  19.           fc.init();  
  20.     }  
  21.   
  22.     private void init() {  
  23.         this.setDefaultCloseOperation(3);     
  24.         this.setSize(new Dimension(1000,600));  
  25.         this.setTitle("文件搜索器");  
  26.         this.setLocationRelativeTo(null);  
  27.         this.setLayout(new FlowLayout());  
  28.         javax.swing.JLabel lblName=new javax.swing.JLabel("要查找的文件所在的盘符:");  
  29.         //添加到窗体上  
  30.          this.add(lblName);  
  31.          jtf=new JTextField(20);  
  32.          this.add(jtf);  
  33.          JLabel lbl=new JLabel("该盘下要查找的文件");  
  34.          this.add(lbl);  
  35.          jtd=new JTextField(20);  
  36.          this.add(jtd);  
  37. //显示目录的窗口  
  38.         JButton jb=new JButton("查找");  
  39.          this.add(jb);  
  40.          jta=new JTextArea(30,50);  
  41.          this.add(jta);  
  42.          JScrollPane pane=new JScrollPane(jta);  
  43.          this.add(pane);           
  44.           fs=new FileSearch(arrayList,str2,str1);   
  45.         ActionListener al=new ActionListener(){  
  46.   
  47.             public void actionPerformed(ActionEvent e) {  
  48.                  str1=jtf.getText();  
  49.                  str2=jtd.getText();  
  50.                 int count= fs.search(str1, str2);  
  51.                  if(arrayList==null&&arrayList.size()==0){  
  52.                      jta.append("您查找的文件不存在!\n");  
  53.  System.out.println("您查找的文件不存在!");  
  54.                  }else{  
  55.                      for(int i=0;i<arrayList.size();i++){  
  56.                          jta.append("文件"+arrayList.get(i)+"\n");  
  57.                      }  
  58.                  }  
  59.   jta.append("总数为"+count);  
  60.        System.out.println("总数:"+count);  
  61.             }  
  62.         };         
  63.         jb.addActionListener(al);  
  64.         this.setVisible(true);  
  65.     }  
  66. //  private int printCount(String str1) {  
  67. //        int count=0;  
  68. //        File fl=new File(str1);  
  69. //        File [] file=fl.listFiles();//列出目录  
  70. //        if(null==file||file.length==0){  
  71. //            return 0;  
  72. //        }  
  73. //        for(i=0;i<file.length;i++){  
  74. //            if(file[i].isDirectory()){  
  75. //                String filemingzi=file[i].getAbsolutePath();  
  76. //              //  String fileming=file[i].getAbsolutePath();  
  77. //                System.out.println("目录:"+filemingzi);  
  78. //                  
  79. //                jta.append(file[i].toString()+"\r\n");  
  80. //                count+=printCount(filemingzi);  
  81. //            }  
  82. //            if(file[i].isFile()){  
  83. //                count++;  
  84. //                String subDir=file[i].getAbsolutePath();  
  85. //                System.out.println("文件:"+subDir);  
  86. //                jta.append(file[i].toString()+"\r\n");  
  87. //                  
  88. //            }  
  89. }  

 后面的那个注释掉的printcount方法,是指定目录搜该目录下所有文件的方法,其实和search()方法就有一点差别,不舍得删就放上去了。。。这个还是简易的,我还会再做修改。。。

额。。。自己刚刚重新看了一遍,发现我这注释真不是一般的少啊。。。不好的习惯啊,我一定会改!


原创粉丝点击