java--io

File 类

操作系统中的文件->file和文件夹->dirdirectory&&路径->path与系统无关!

public class IODemo {
     public static void main(String[] args) {
          //File类的静态从成变量
          //目录分隔符  lunix为 :  冒号  win 为 ; 分号
          System.out.println("目录分割符"+ File.pathSeparator);
          //与系统有关的名称分割符 向右的斜线 \ 目录的名称分割  lunix /
          System.out.println("名称分割符"+File.separator);
     }
}

控制台:

路径:

 绝对路径:在系统中具有唯一性的  D:\Git\bin ;或者互联网中具有唯一性的  https://mp.csdn.net/postedit 这个也是绝对路径

相对路径: 路径之间的相对关系,不是唯一的;以一个目录为参照点,来去找上下目录

  D:\Git\bin

     Git的父目录  D  是唯一的,上一层目

     Git的子目录  bin  可以有多个,下一层目录

 

File类的三重构造方法

package cn.bufanli.iodemo;

import java.io.File;

/**
 * file类的构造方法
 * 三种重载形式
 */
public class FileDemo01 {
     public static void main(String[] args) {
         getFileOne();
         getFileTwo();
          getFileThree();
     }
     /**
      * File(String pathname)
      * 将String类型路径封装成一个file类型的对象
      */
     public static void getFileOne(){
          File file = new File("d:\\Git\\LICENSE.txt");
          System.out.println(file);

     }
     /**
      * File(String parent,String child)
      * 需要传递字符串类型的父路径,字符串类型的子路径
      * 将路径封装成一个file类型的对象比上面更灵活
      * 可以单独控制父路径和子路径
      */
     public static void getFileTwo(){
          File file = new File("d:","Git");
          System.out.println(file);

     }
     /**
      * File(File parent,String child)
      * 需要传递File类型的父路径,字符串的子路径
      * 父类路径是file类型,可以单独调用file的方法
      */
     public static void getFileThree(){
          File parent = new File("d:");
          File file = new File(parent,"Git");
          System.out.println(file);

     }
}

控制台

File类的创建和删除功能

package cn.bufanli.iodemo;

import java.io.File;
import java.io.IOException;

/**
 * File类的创建和删除功能
 * 文件 或是文件夹
 */
public class FileDemo02 {
     public static void main(String[] args) throws IOException {
          //创建文件功能
          creatFile();
          //创建文件夹功能
          creatFolder();
          //删除文件或文件夹
          deleteFolder();

     }

     /**
      * File的创建文件功能
      * 创建的路径在File的构造方法中给出
      * boolean newFile = file.createNewFile();
      * 只能创建文件不能创建文件夹
      * 文件已存为false在不在创建
      */
     public static void creatFile() throws IOException {
          File file = new File("d:\\yueshu\\a.txt");
          boolean newFile = file.createNewFile();
          System.out.println("创建文件:"+newFile);

     }
     /**
      * File的创建文件夹功能
      * 创建的路径在File的构造方法中给出
      * boolean newFile = file.mkdir(); 创建单个文件
      * boolean newFile = file.mkdirs(); 创建多个文件,也可以创建单个
      * 只能创建文件不能创建文件夹
      * 文件夹已存为false在不在创建
      */
     public static void creatFolder() throws IOException {
          File file = new File("d:\\yueshu\\txt");
          boolean newFile = file.mkdirs();
          System.out.println("创建文件夹:"+newFile);

     }
     /**
      * File的删除功能
      * 删除的路径在File的构造方法中给出
      * 文件夹已删除为true
      * 删除方法不走回收站直接从硬盘删除
      * 删除有风险,运行需谨慎
      */
     public static void deleteFolder() throws IOException {
          File file = new File("d:\\yueshu\\txt");
          boolean newFile = file.delete();
          System.out.println("删除:"+newFile);

     }
}

运行前

运行后

控制台

 

File类的获取功能

package cn.bufanli.iodemo;

import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;

/**
 * File类的获取功能
 */
public class FileDemo03 {
     public static void main(String[] args) {
          getName();
          getLength();
          getAbsolute();
          getParentAbsolute();
          getFileList();
          getRoot();
          filter();
     }
/**
 * File类的获取功能
 * String name = new File("xxx").getName();
 * 返回路径中表示文件名或者文件夹名,获取路径中的最后部分的名字
 */
public static void getName(){
     System.out.println(new File("d:\\yueshu\\a.txt").getName());
}

     /**
      * File类的获取功能
      * String name = new File("xxx").getPath();
      * 将file对象路径转换成一个字符串和toString()功能一样
      */
     public static void getPath(){
          System.out.println(new File("d:\\yueshu\\a.txt").getPath());
     }

     /**
      * File类的获取功能
      * Long length = new File("xxx").getLength();
      * 拿到文件大小的字节数
      */
     public static void getLength(){
          System.out.println(new File("d:\\yueshu\\a.txt").length());
     }
     /**
      * File类的获取功能
      * File path = new File("xxx").getAbsoluteFile(); 返回String对象
      * String path = new File("xxx").getAbsolutePath(); 返回 String对象
      * 获取绝对路径
      */
     public static void getAbsolute(){
          System.out.println(new File("d:\\yueshu\\a.txt").getAbsoluteFile());
          System.out.println(new File("d:\\yueshu\\a.txt").getAbsolutePath());
          System.out.println("项目路径:"+new File("").getAbsolutePath());
     }
     /**
      * File类的获取功能
      * File path = new File("xxx").getParentFile(); 返回 File对象
      * String path = new File("xxx").getParent(); 返回  String对象
      * 获取父路径
      */
     public static void getParentAbsolute(){
          System.out.println(new File("d:\\yueshu\\a.txt").getParent());
          System.out.println(new File("d:\\yueshu\\a.txt").getParentFile());
          //为null
          System.out.println("项目父路径:"+new File("").getParentFile());
          //结合getParentFile使用
          System.out.println(new File("d:\\yueshu\\a.txt").getAbsoluteFile().getParentFile());
     }

     /**
      * File类的获取功能
      * String[] list = file.list();
      * File[] files = file.listFiles();
      * 获取路径中的文件夹名和目录名称
      */
     public static void getFileList(){
          File file = new File("d:\\yueshu");
          File[] files = file.listFiles();
          ArrayList<File> files1 = new ArrayList<>();

          for (File file1 : files) {
               files1.add(file1);
          }
          System.out.println("file集合对象"+files1);


          String[] list = file.list();
          ArrayList<String> strings = new ArrayList<>();
          for (int i = 0; i < list.length; i++) {
               strings.add(list[i]);
          }
          System.out.println("String集合"+strings);

     }
     /**
      * 文件获取的过滤器
      * 遍历目录方法(重载的形式)
      */
     public static  void  filter(){
          File file = new File("D:\\nginx-1.12.2");
          File[] files = file.listFiles(new FileFilter() {
               /**
                *
                * @param pathname 集合中的每一个file对象  false会过滤掉
                * @return
                */
               @Override
               public boolean accept(File pathname) {
                    System.out.println("重写的方法:"+pathname);
                 //endsWith 以什么结尾 true 就 存到 数组中
                    return pathname.getName().endsWith(".exe");
               }
          });
          ArrayList<File> files2 = new ArrayList<>();
          for (File file1 : files) {
               files2.add(file1);
          }
          System.out.println("过滤器:"+files2);
     }

     /**
      * 获取系统的所有根目录
      */
     public static void getRoot(){

          File[] files = File.listRoots();
          ArrayList<File> files2 = new ArrayList<>();

          for (File file : files) {
               files2.add(file);
          }
          for (File file : files) {
               File[] files1 = file.listFiles();
               for (File file1 : files1) {
                    files2.add(file1);

               }
          }
          System.out.println("系统"+files2);
     }
}

File类的判断功能

package cn.bufanli.iodemo;

import java.io.File;

/**
 * File的判断功能
 */
public class FileDemo04 {
     public static void main(String[] args) {
          judgeFile();
          judgeFolder();
     }

     /**
      * 判断文件是否存在
      * 路径在File的构造方法中给出
      * boolean exists = file.exists();
      *
      */
     public static  void judgeFile(){
          File file = new File("d:\\yueshu\\a.txt");
          boolean exists = file.exists();
          System.out.println(exists);
          /**
           * 项目中的路径
           */
          File fileSrc = new File("src");
          boolean existsSrc  = fileSrc.exists();
          System.out.println(existsSrc);
     }

     /**
      * 判断是不是文件夹
      * 路径在File的构造方法中给出
      * boolean directory = file.isDirectory();
      * 判断是不是文件
      * boolean file = Folder.isFile();
      */
     public static  void judgeFolder(){
          File file = new File("d:\\yueshu\\a.txt");
          //判断路径是否存在
          if(file.exists()){
               boolean directory = file.isDirectory();
               boolean file1 = file.isFile();
               System.out.println(file+"是否是文件夹:"+directory);
               System.out.println(file+"是否是文件:"+file1);
          }else{
               System.out.println("路径不存在");
          }

          File Folder = new File("d:\\yueshu");
          if(Folder.exists()){
               boolean directory2 = Folder.isDirectory();
               boolean file2 = Folder.isFile();
               System.out.println(Folder+"是否是文件夹:"+directory2);
               System.out.println(Folder+"是否是文件:"+file2);
          }else{
               System.out.println("路径不存在");
          }

     }
}

递归调用->遍历路径下所有目录

 

package cn.bufanli.iodemo;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * 递归遍历路径下所有下的文件夹和文件
 */
public class FIleDemo05 {

     public static ArrayList<File> files1 = new ArrayList<>();

     public static void main(String[] args) {
          File file = new File("C:\\eclipse");
          List<File> dirAll = getDirAll(file);
          System.out.println(dirAll);
     }

     public static List<File> getDirAll(File file) {

          files1.add(file);
          File[] files = file.listFiles();

          for (File file1 : files) {
               //如果是目录
               if (!file1.isFile()) {
                    getDirAll(file1);
               }else{
                    files1.add(file1);
               }

          }
          return files1;

     }

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值