黑马程序员 java基础之IO流(二)


File可以将已有的或者未出现的文件或者文件夹封装成一个对象;

File中的常见方法演示

    1、创建

         boolean createNewFile();会发生异常IOException.

             在指定位置创建文件,如果文件存在则返回false

             与输出流不同,输出流一旦建立对象,就会创建文件,如果存在则会覆盖;

        static File createTempFile(String prefix, String suffix);可以创建一个临时文件

        boolean mkdir();创建目录

        boolean mkdir();创建多级目录

    2、删除

        boolean delete();删除未成功,返回false;

        deleteOnExit(); 在程序退出时删除文件;

    3、判断

       boolean exists();判断文件是否存在;

       isDirectory();在调用该方法时必须先调用上一方法;

       isFile();在调用该方法时必须先调用上一方法;

       isHidden();

        isAbsolute();判断是否是绝对路径

    4、获取

        getName();

       String getParent()该方法返回的是文件的绝对路径中的父目录,或是该文件所在的上一层目录,如果File对象中没指定绝对路径或者上一层目录,   返回null;

        getPath();File对象中封装的是什么路径就获取什么路径;

        File getAbsoluteFile()返回此抽象路径名的绝对路径名形式。          

        String getAbsolutePath()  返回此抽象路径名的绝对路径名形式。

       renameTo(File f);改名

       static File[] listRoots() 列出可用的文件系统根。 

 练习一:打印c盘文件下的目录

 

 class FileTest

{
    public static void main(String [] args){
        File file = new File("C:\\");//将目录封装成对象,可以返回目录下的所有文件名;
        String [] str = file.list();
        for(String name:str){
            System.out.println(name);
        }
    }
}

 练习二:打印一个目录下所有的java文件

class FileTest
{
    public static void main(String [] args){
        File dir = new File("E:\\workspace\\notes\\");
        String [] names = dir.list(new FilenameFilter()
        {
            public boolean accept(File dir, String name)
            {
                return name.endsWith(".java");                      
            }
        });
        for(String name:names){
            System.out.println(name);
        }
    }

}

练习三:打印出该目录下所有文件和文件夹,包括子文件夹,带层次

 class FileTest

{
    public static void main(String [] args)
    {
        File dir = new File("E:\\workspace\\");
        showDir(dir,0);
    }
    public static String getLevel(int level)
    {
        StringBuilder sb = new StringBuilder();
        for(int i=0; i<level; i++)
        {
            sb.append("  ");
        }
        return sb.toString();
    }   
    public static void showDir(File dir,int level)
    {
        System.out.println(getLevel(level)+ dir.getName());
        File [] files = dir.listFiles();
        level++;
        for(int i=0; i<files.length; i++)
        {           
            if(files[i].isDirectory())
                showDir(files[i],level);
            else
                System.out.println(getLevel(level)+files[i]);
        }
    }
}

 练习四:将指定目录下的所有.java文件生成一个目录列表

class FileTest
{
    public static void main(String [] args)
    {
        //将目录封装成对象
        File dir = new File("E:\\workspace\\");
        //创建一个列表存放目录
        List<File> list = new ArrayList<File>();
        //调用自定义方法将文件目录写到列表
        fileToList(dir,list);
        //调用自定义方法将目录写到本地文本
        writeToFile(list, "java.txt");
         
    }
    public static void fileToList(File dir,List<File> list)
    {       
        //获取File对象
        File [] files = dir.listFiles();
        //高级循环遍历
        for(File file : files){
            if(file.isDirectory())
                fileToList(file,list);
            else{
                if(file.getName().endsWith(".java"))
                    list.add(file);
            }               
        }       
    }
    public static void writeToFile(List<File> list, String txt){
        BufferedWriter bw = null;
        try
        {
            //输出流写入文本
            bw = new BufferedWriter(new FileWriter(txt));
            for(File f : list){
                String path = f.getAbsolutePath();
                bw.write(path);
                bw.newLine();
                bw.flush();
            }
 
        }
        catch (IOException e)
        {
            System.out.println(e.toString());
        }
        finally{
            try
            {
                if(bw == null)
                    bw.close();
            }
            catch (IOException e)
            {
                System.out.println(e.toString());
            }
        }
    }

} 

 

 

 

 

 

posted @ 2013-05-14 20:55  xiewen3410  阅读(143)  评论(0编辑  收藏  举报