黑马程序员技术交流社区

标题: 一个小程序,把一个文件夹所有.java的文件打印。 [打印本页]

作者: 孙浩迪    时间: 2012-6-17 18:14
标题: 一个小程序,把一个文件夹所有.java的文件打印。
本帖最后由 sunhaodi 于 2012-6-19 14:38 编辑

package day6;

import java.io.File;
import java.io.FilenameFilter;


public class Test {
  
         public static void main(String[] args) {
               
                 File dir  = new File("");
                 
             String dirString = dir.getAbsolutePath();
                 System.out.println(dirString);
                 
                Filter filter = new Filter(".java");
                dir = new File(dirString);
                File[] files=dir.listFiles(filter);
                for(int i=0;i<files.length;i++){
   
                          System.out.println(files.getName());
                        
               
                 
                }
                 
                 
        }
        
}

class Filter implements FilenameFilter{
        
    String FilterString;
    public Filter(String FilterString){
                    this.FilterString= FilterString;
                    
            
    }

        @Override
        public boolean accept(File dir, String name) {
                // TODO Auto-generated method stub
                return name.endsWith(FilterString);
        }
        
        
}

我这个是在网上找的方法, 也好使啊, 好多地方不明白, 实现的那个接口是干什么的, 还有,有没有其它方法能取一个文件夹的后缀.java文件啊

作者: 胡大强    时间: 2012-6-17 18:25
public class Kuozhanming {

        public static void main(String[] args) {
                String FileName = "123.txt";
                String KzmName = FileName.substring(FileName.lastIndexOf("."));
                System.out.print(KzmName);
        }
}
/*这是获得文件后缀名的方法之一。。。。还有一种方法,就是字符串的分割,用split("\\."),即用点来分割,然后输出整个字符串长度length-1位置的字符串。这个字符串也就是扩展名后缀。*/
作者: 孙浩迪    时间: 2012-6-17 20:18
胡大强 发表于 2012-6-17 18:25
public class Kuozhanming {

        public static void main(String[] args) {

这样我知道, 比如我要打印D盘里的所有.java文件怎么搞啊?


作者: 杨朔    时间: 2012-6-17 20:31
File[]files=file.listFiles();
File java=new File(file.getAbsolutPath()+"\java");
for(int i=0;i<files.length;i++){
if(files[i].getAbsolutpath().endsWith(".java"))
   File javaFile=new File(files[i].getAbsolutPath())
}
作者: 胡大强    时间: 2012-6-17 22:29
sunhaodi 发表于 2012-6-17 20:18
这样我知道, 比如我要打印D盘里的所有.java文件怎么搞啊?

import java.io.*;
class ReadFile
{
        public static void main(String[] args)
        {
                File f=new File("D:\\123.txt");  //D盘下面的123.txt文件
                try{
                        FileReader fr=new FileReader(f);
                        BufferedReader br=new BufferedReader(fr);
                        try{
                                String line=br.readLine();
                                while(line!=null){
                                        System.out.println(line);
                                        line=br.readLine();
                                }
                        }catch (IOException e){
                                e.printStackTrace();
                        }
                }catch(FileNotFoundException e){
                                e.printStackTrace();
                        }
        }
}
///打印一个文件。。。至于多个。。。这个有待研究。。。。多谢楼主的分享啊,,很不错。。由一个问题引出一些列问题 ,好问题啊。
作者: 黑马_张佳超    时间: 2012-6-18 00:38
FilenameFilter接口是用于过滤器文件名。实现此接口的类重写accept()方法,来检测指定文件是否包含在指定目录列表中。
楼主是提供的示例实现步骤:
1.创建指定路径的File实例。构造函数的参数类型为路径名称。其中参数""表示当前工程所在目录。若需要指定磁盘目录:"D:\\"。
2.通过File对象的getAbsolutePath()获取当前抽象路径名的绝对路径名称形式。如示例中的""路径在我的系统中表示为:"E:\mobilesafe\itheima"
3.创建自定义的Filter对象实例,并把我们需要过滤的文件类型的后缀名传给该对象。即:".java"类型
4.然后用步骤2处理后的绝对路径名称创建新的File对象。这样就获得了我们想要处理目录的File绝对路径实例
5.通过上一步中File对象的listFiles()方法,将步骤3中的Filter对象作为参数。这样就获得了所有以".java"为后缀名称的File文件集合。
6.最后就是将File集合中的所有文件名称打印出来。
至于其他实现方式,原理上应该都大同小异。
作者: 孙安庆    时间: 2012-6-18 00:57
  1. import java.io.*;
  2. class test1
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 listDemo();
  7.         }
  8.         public static void listDemo()
  9.         {
  10.                
  11.                 File f=new File(".");//当前路径下
  12.                 String[] names=f.list(new FilenameFilter(){//匿名内部类   
  13.                         public boolean accept(File dir, String name)
  14.                         {
  15.                                 return name.endsWith("java") || new File(name).isDirectory();
  16.                         }
  17.                 });

  18.                 for (String name:names )
  19.                 {
  20.                         System.out.println(name);
  21.                 }
  22.         }
  23. }
复制代码
主要是File类中的public String[] list(FilenameFilter filter)函数
FilenameFilter这个接口是用来定义一个判断规则,其中的accept()方法封装了过滤文件名的代码块,指定了哪些文件可以被list方法列出来

作者: 李元峰    时间: 2012-6-18 01:43
package javatext;

import java.io.File;

public class ShowFileTree {

    public static void main(String[] args) {
        File f = new File("D:/workspace/j2setest/src/javatext");
        System.out.println(f.getName());
        showTree(f,1);

    }

    //显示目录树结构
    public static void showTree(File f, int level){
        String preStr = "";
        //构造前导字符串
        for(int i=0 ; i<level; i++){
            preStr +="    ";
        }
        
        File[] childs = f.listFiles();
        for(int i=0; i<childs.length; i++){
               String fileName = childs.getName();
               if(getExession(fileName).equals("java")){
               System.out.println(preStr+childs.getName());
               
                  }
               if(childs.isDirectory()){
                   showTree(childs, level+1);
               }
        }
        
    }
   
   
    //返回文件的后缀名
    public static String getExession(String fileName){
        String[] str = fileName.split("\\.");
        return str[str.length-1];
    }
}









欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2