• Java中的IO流(三)


      上一篇《Java中的IO流(二)》把学习Java的字符流以及转换流作了一下记录,从本篇开始将把IO流中对文件或文件夹操作的对象File类的学习进行一下记录。

    一,File类的构造函数及字段

      File类是将文件或文件夹封装成对象的类;方便对文件或文件夹的属性进行操作;File对象可以作为参数传递给流的构造函数。

      File类的构造函数重载了四个版本,这四个版本可以将已存在或不存在的文件或文件夹封装成为File类的对象;

     1     private static void file_demo1() throws URISyntaxException {
     2         // 接收一个String路径参数通过将字符串路径名转换为抽象路径名来创建一个File实例
     3         File file1 = new File("C:\");
     4         // 接收一个String类型的父路径和一个String类型的子路径来创建一个File实例
     5         File file2 = new File("C:\", "filepath");
     6         // 通过接收一个File类型的父路径和一个String类型的子路径来创建一个File实例
     7         File file3 = new File(file1, "filepath2");
     8         URI url = new URI("");
     9         //接收一个URI类型的路径来创建一个File实例
    10         File file4 = new File(url);
    11     }
      在上面的例子中,我们为了创建File类的实例,用了“C:\”这样的字符路径,File类为了兼容各种操作系统,提供了获取系统提供的默认分隔符的静态字段
     1     private static void file_demo2() {
     2         //在Unix系统上引值为“/”;在Windows上此值为“\”,返回String
     3         System.out.println(File.separator);
     4         //在Unix系统上引值为“/”;在Windows上此值为“\”,返回char
     5         System.out.println(File.separatorChar);
     6         //在Unix系统上引值为“:”;在Windows上此值为“;”,返回String,例如用在环境变量的分隔上
     7         System.out.println(File.pathSeparator);
     8         //在Unix系统上引值为“:”;在Windows上此值为“;”,返回char,例如用在环境变量的分隔上
     9         System.out.println(File.pathSeparatorChar);
    10     }

     二,File类的常用功能——获取

      1,获取文件名称

      2,获取文件路径

      3,获取文件大小

      4,获取文件修改时间 

     1    private static void file_demo3() {
    2
    File file = new File("demo.txt"); 3 String fileName = file.getName();//文件名 4 String filePath = file.getPath();//相对路径 5 String fileAbsolutePath = file.getAbsolutePath();//绝对路径 6 long len = file.length();//文件大小 9 long modifytime = file.lastModified();//最后修改时间 10 System.out.println("fileName:" + fileName); 11 System.out.println("filePath:" + filePath); 12 System.out.println("fileAbsolutePath:" + fileAbsolutePath);15 System.out.println("lostModified:" + modifytime); 16 System.out.println("lengh:" + len);
    17     System.out.println("parent:"+file.getParent());//返回此抽象路径的父目录,若没有父目录则返回null
    18 System.out.println("parentFile:"+file.getParentFile());//返回此抽象路径的父目录的File对旬
    19 }

     

     三,文件或目录的创建与删除
      1,创建文件
    1     private static void file_demo4() throws IOException {
    2         File file = new File("a.txt");
    3         file.createNewFile();// 创建文件,若文件不存在则创建,若已存在则不创建
    4         // 静态字段,在默认临时路径下创建临时文件,第一个参数是文件名,第二个参数是文件后缀名,返回File对象
    5         File.createTempFile("temp", "aaa");
    6         // 静态字段,在指定目录下创建临时文件,第一个参数是文件名,第二个参数是文件后缀名,返回File对象
    7         File.createTempFile("temp", ".aaa", new File("C:\Users"));
    8     }

       2,创建目录及删除目录或文件

    1     private static void file_demo5() {
    2         File file=new File("C:\abc");
    3         file.mkdir();//创建文件夹也即是目录
    4         file.mkdirs();//创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。即创建“C:acd”这样的目录
    5         file.delete();//删除目录或文件,只能删除最内层的文件或目录,若多级目录只能删除一级
    6         file.deleteOnExit();//当虚拟机退出时删除文件或目录
    7     }

    四,判断

    1     private static void file_demo6() {
    2         File file = new File("a.txt");
    3         System.out.println(file.exists());// 判断文件或目录是否存在
    4         System.out.println(file.isDirectory());//判断是不是目录
    5         System.out.println(file.isFile());//判断是不是文件
    6         System.out.println(file.isAbsolute());//判断是不是绝对路径
    7         System.out.println(file.isHidden());//判断是不是隐藏文件或目录
    8     }

    五,重命名

    1     private static void file_demo7() {
    2         File file = new File("2.avi");
    3         System.out.println(file.renameTo(new File("C:\9999.avi")));//相当于剪切+重命名的功能
    4     }

    六,系统根目录和容量大小

    1     private static void file_demo8() {
    2         File[] files = File.listRoots();//系统根目录即系统盘符
    3         for (File file : files) {//getUsableSpace()与 getFreeSpace() 相比,能更准确地估计可实际写入的新数据数。 
    4             System.out.println(file.getPath() + "        总容量:" + file.getTotalSpace() + "        可用容量:"
    5                     + file.getFreeSpace() + "        已用容量:" + file.getUsableSpace());
    6         }
    7     }

    七,获取目录内容

    1     private static void file_demo8() {
    2         File[] files = File.listRoots();//系统根目录即系统盘符
    3         for (File file : files) {//getUsableSpace()与 getFreeSpace() 相比,能更准确地估计可实际写入的新数据数。 
    4             System.out.println(file.getPath() + "        总容量:" + file.getTotalSpace() + "        可用容量:"
    5                     + file.getFreeSpace() + "        已用容量:" + file.getUsableSpace());
    6         }
    7     }
    八,文件过滤器
      返回文件字符数组
    1     // 列出C盘下的java文件
    2     private static void file_demo10() {
    3         File file = new File("C:\");
    4         String[] fileFilter = file.list(new MyFileNameFilter());// 接收一个实现了FilenameFilter接口的过滤器
    5         for (String str : fileFilter) {
    6             System.out.println(str);
    7         }
    8     }    
    1   public class MyFileNameFilter implements FilenameFilter {
    2
    3      @Override
    4       public boolean accept(File dir, String name) {
    5           return name.endsWith(".java");
    6     }
    7 
    8 }

       返回File文件对象的数组的过滤器

    1     //列出C盘下非隐藏的文件
    2     private static void file_demo11() {
    3         File file = new File("C:\");
    4         File[] files = file.listFiles(new MyFileFilter());//接收一个实现了FileFilter接口的文件属性过滤器对象的参数
    5         for (File fl : files) {
    6             System.out.println(fl.getName());
    7         }
    8     }
    1     public class MyFileFilter implements FileFilter {
    2     @Override
    3     public boolean accept(File pathname) {
    4         return !pathname.isHidden();
    5     }
    6     }

    九,递归列出C盘下某一目录下的所有文件和目录

     1     public static void main(String[] args) throws IOException {
     2         File file = new File("c:\abc");
     3         listFile(file);
     4     }
     5 
     6 
     7     private static void listFile(File file) {
     8         File[] files = file.listFiles();
     9         for (File fl : files) {
    10             if (fl.isDirectory()) {
    11                 System.out.println(fl.getName());
    12                 listFile(fl);
    13             } else {
    14                 System.out.println(fl.getName());
    15             }
    16         }
    17     }

     

     
  • 相关阅读:
    Javascript 严格模式详解
    SeaJS与RequireJS最大的区别
    AMD 和 CMD 的区别有哪些?
    JS 关于(function( window, undefined ) {})(window)写法的理解
    高性能 CSS3 动画
    js对象私有变量公有变量问题
    探讨js字符串数组拼接的性能问题
    提高 DHTML 页面性能
    vue请求本地json数据
    vuejs绑定img 的src
  • 原文地址:https://www.cnblogs.com/zw971084570/p/10039695.html
Copyright © 2020-2023  润新知