黑马程序员__IO流笔记二

----------------------android培训java培训、期待与您交流! ----------------------

File

File对象提供了两个获取路径分隔符(pathSeparator)和文件名称分隔符的静态方法(separator)

    File里的creatNewFile如果文件存在则不创建。而输出流中,无论文件是否存在,都创建(如果想覆盖,加上布尔型的参数)

 

// File创建文件和创建文件夹。

File file = new File("d:\\test.txt");//获得实例对象,如果不存在,并未创建

boolean a = file.createNewFile();

System.out.println(a);

File dir = new File("d:\\dir");

boolean b = dir.mkdir();//mkdirs可以创建多级目录。

System.out.println(b);

// 删除多级目录只能删除最内层文件,而且java删除不经过回收站

// 判断是文件还是文件夹,得先判断文件或文件夹是否存在。

File f = new File("d:\\haha.txt");

f.createNewFile();

System.out.println(f.exists());

System.out.println(f.isFile());

// File获取

    File f = new File("Test\\abc.txt");

    System.out.println(f.getAbsoluteFile());//绝对路径

    System.out.println(f.getName());//文件名

    System.out.println(f.getPath());//路径(f里放的什么就是什么)

    System.out.println(f.getParent());//获取显式父目录

    //获得所有盘符

    File[] roots = File.listRoots();

    for (File file : roots) {

       System.out.println(file);

    }

// 获得当前目录的子文件和文件夹对象(包含隐藏文件)

    File dir = new File("c:\\1");

    File[] files = dir.listFiles();//如果File对象中封装的文件夹不存在,或者是一个文件,listFiles返回的就是null,所以遍历此方法产生对象之前最好加上exists()isDirectory()判断

    for (File f : files) {

       System.out.println(f);

    }

    //重命名,剪切

    File f1 = new File("d:\\1.bmp");

    File f2 = new File("d:\\test\\1.bmp");

    f1.renameTo(f2);

 

过滤器://以后缀名过滤文件

File dir = new File("f:\\");

String[] names = dir.list(new SuffixFilter(".jpg"));

for (String name : names) {

    System.out.println(name);

}

 

publicclass SuffixFilterimplements FilenameFilter {

    private Stringsuffix;

    public SuffixFilter(String suffix) {

       super();

       this.suffix = suffix;

    }

    @Override

    publicboolean accept(File dir, String name) {

       return name.endsWith(suffix);

       //如果想过滤文件,得到文件夹,可以重写过滤器,返回dir.isDirectory()

    }

}

 

// 需求:列出指定目录下所有内容,包含着子目录中的内容。(递归)

//当一个功能被重复使用,而且每次调用时,传递的参数和上次的运行结果相关时,可以使用递归。递归使用的注意事项:必须要定义条件,一定要控制递归次数。

    publicstaticvoid main(String[] args) {

       File dir = new File("f:\\男人本色");

       listAll(dir, 0);

    }

 

    publicstaticvoid listAll(File dir,int level) {

       System.out.println(getSpace(level) + dir);

       level++;

       File[] files = dir.listFiles();

       for (File file : files) {

           if (file.isDirectory()) {

              listAll(file, level);//递归。

           } else

              System.out.println(getSpace(level) + file);

       }

    }

 

    privatestatic String getSpace(int level) {

 

       StringBuilder sb = new StringBuilder();

       for (int x = 0; x < level; x++) {

           sb.append(");

       }

       return sb.toString();

    }

 

 

// 需求:删除指定目录下所有内容 (递归)

publicstaticvoid main(String[] args) {

       File dir = new File("f:\\1");

       removeDir(dir);

    }

 

    publicstaticvoid removeDir(File dir) {

       //列出指定目录下的所有文件对象

       File[] files = dir.listFiles();

       //遍历files数组中的文件对象,如果是文件夹,继续判断,直到是文件时,再进行删除。删除完后删除该文件夹

       for (File file : files) {

           if (file.isDirectory()) {

              removeDir(file);

           } else {

              file.delete();

           }

       }

       dir.delete();

    }

// 需求:将指定目录下的所有的java文件的绝对路径存储到一个文本文件中。包含子目录中的java文件。

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileFilter;

import java.io.FileWriter;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

 

publicclass JavaFileListTest {

 

    publicstaticvoid main(String[] args)throws IOException {

       File dir = new File("d:\\java0813");

       FileFilter filter = new FileFilter() {

           @Override

           publicboolean accept(File pathname) {

              return pathname.getName().endsWith(".java");

           }

 

       };

       List<File> list = new ArrayList<File>();

       getFileList(dir, filter, list);

       File dest = new File(dir,"javalist.txt");

       writeFile(list, dest);

    }

 

    /**

     *将集合中的file对象的信息写入到目标文件中。

     */

    publicstaticvoid writeFile(List<File> list, File dest)throws IOException {

       //创建流对象。

       BufferedWriter bufw = null;

       try {

           bufw = new BufferedWriter(new FileWriter(dest));

 

           //迭代集合。

           for (File file : list) {

              bufw.write(file.getAbsolutePath());

              bufw.newLine();

               bufw.flush();

           }

       } finally {

           if (bufw !=null)

              try {

                  bufw.close();

              } catch (IOException e) {

                  e.printStackTrace();

              }

       }

 

    }

 

    /**

     *对指定目录进行递归,将符合filter过滤条件的file对象存储到指定集合中。

     */

    publicstaticvoid getFileList(File dir, FileFilter filter, List<File> list) {

 

       File[] files = dir.listFiles();

 

       if (files !=null) {

           for (File file : files) {

              if (file.isDirectory()) {

                  getFileList(file, filter, list);

              } else {

                  if (filter.accept(file)) {

                     list.add(file);

                  }

              }

           }

       }

    }

}

 

 

 

----------------------android培训java培训、期待与您交流! ----------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值