IO的初步学习

3.IO

IO = input + output

主要针对系统中文件或目录进行相应的操作。

所有与io操作相关的类都位于java.io包下

3.1 File

  • 文件和目录路径名的抽象表示
  • 文件和目录可以通过File封装成一个对象
  • 对于File而言,封装的并不是一个真正存在的文件,仅仅只是一个路径而已。他可以是存在的,也可以是不存在的。

3.1.1.构造方法

    • File(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例。
      File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
      File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例。
    public static void main(String[] args) {
        //创建File对象
        //方式一:`File(String pathname)`  通过将给定的路径名字符串转换为抽象路径名来创建新的 `File`实例。
        File f1 = new File("D:\\IO\\a.jpg");
        System.out.println(f1);
        //方式二  `File(String parent,  String child)`  从父路径名字符串和子路径名字符串创建新的 `File`实例。
        File f2 = new File("D:\\IO","a.jpg");
        System.out.println(f2);
        //方式三:`File(File parent, String child)`  从父抽象路径名和子路径名字符串创建新的 `File`实例。
        File parent = new File("E:\\IO");
        File f3 = new File(parent,"a.jpg");
        System.out.println(f3);
    }

3.1.2 File类的创建方法

    • booleancreateNewFile() 当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。
    • booleanmkdir() 创建由此抽象路径名命名的目录。
      booleanmkdirs() 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。
    public static void main(String[] args) throws IOException {
        //在D的IO目录下创建一个文件java.txt
        File  f1 = new File("D:\\IO\\java.txt");
        boolean b = f1.createNewFile();
        System.out.println(b);
        // 在D盘的IO目录下下创建一个目录 JavaSE
        System.out.println("---------------------------------");
        File  f2 = new File("D:/IO/JavaSE");
        System.out.println(f2.mkdir());
        System.out.println("---------------------------------");
        // 在D盘的IO目录下创建一个多级目录 JavaWeb\HTML
        //File.separator 根据操作系统自动判断使用那种路径分隔符
        File f3 = new File("D:" + File.separator+"IO"+File.separator+"JavaWeb"+File.separator+"HTML");
        System.out.println(f3);
        System.out.println(f3.mkdirs());
    }

3.1.3 File类的判断和获取功能

判断

    • booleanexists() 测试此抽象路径名表示的文件或目录是否存在。
    • booleanisAbsolute() 测试这个抽象路径名是否是绝对的。
      booleanisDirectory() 测试此抽象路径名表示的文件是否为目录。
      booleanisFile() 测试此抽象路径名表示的文件是否为普通文件。
      booleanisHidden() 测试此抽象路径名命名的文件是否为隐藏文件。

获取

    • StringgetAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
    • StringgetName() 返回由此抽象路径名表示的文件或目录的名称。
      StringgetParent() 返回此抽象路径名的父 null的路径名字符串,如果此路径名未命名为父目录,则返回null。
      FilegetParentFile() 返回此抽象路径名的父,或抽象路径名 null如果此路径名没有指定父目录。
      StringgetPath() 将此抽象路径名转换为路径名字符串。
    • String[]list() 返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。
      String[]list(FilenameFilter filter) 返回一个字符串数组,命名由此抽象路径名表示的目录中满足指定过滤器的文件和目录。
      File[]listFiles() 返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。
      File[]listFiles(FileFilter filter) 返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。
      File[]listFiles(FilenameFilter filter) 返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。
    public static void main(String[] args) {
        // 创建File对象
        File f1 = new File("D:\\IO\\Java.txt");
        System.out.println(f1.isAbsolute());//测试是否是绝对路径表示  true
        System.out.println(f1.isDirectory());//测试是否是目录  false
        System.out.println(f1.isFile());//测试是否是文件 true
        System.out.println(f1.exists());//判断该路径表示的File对象是否真实存在 true
        System.out.println("------------------获取-----------------------");
        System.out.println(f1.getAbsolutePath());//D:\IO\Java.txt
        System.out.println(f1.getPath());//D:\IO\Java.txt
        System.out.println(f1.getName());//Java.txt
        System.out.println("-----------------------获取列表------------------------");
        File f2 = new  File("D:\\IO");
        String[] strFiles = f2.list();
        for(String str: strFiles){
            System.out.println(str);
        }
        System.out.println("--------------------------------------");
       File[] files =  f2.listFiles();
       for(File f : files){
           System.out.println(f.getName());
       }
    }

3.1.4 File类的删除功能

    • booleandelete() 删除由此抽象路径名表示的文件或目录。
    public static void main(String[] args) {
        File f1 = new File("D:\\IO\\Java.txt");
        f1.delete();//true
        File f2 = new File("D:\\IO\\JavaWeb");
        f2.delete();//false
    }
  • 该删除功能只能删除文件或者空目录,如果目录不为空 则删除失败
  • 使用该方法删除的文件和目录不会进入到回收站

3.2 绝对路径和相对路径

绝对路径: 完整的路径名,不需要任何的其他信息就可以直接定位到它所表示的文件或目录。在windowns系统中 ,都是一个盘符开头 linux系统下都是以"/"

相对路径: 必须使用取自其他领的信息进行解释,才能定位文件或目录。

        File f3 = new File("dir");//相对当前工程所在的路径
        System.out.println(f3.mkdirs());
        File  f4 = new File("day_12\\dir");
        System.out.println(f4.mkdirs());

例子:遍历目录

需求: 给定一个路径(D:\IO)通过代码完成遍历该目录下的所有内容,并把所有的文件的绝对及路径输出在控制台

分析:

1 D:\\IO本身是一个目录 listFiles获取根目录下的所有文件和目录

2 依次对其中的目录文件进行输出

3 如果遇到目录 则执行1相同操作。 采用递归思想

public class FileDemo5 {
    public static void main(String[] args) {
        File srcFile = new File("D:\\IO");
        //调用方法 递归
        getAllFilePath(srcFile);
    }
    //定义一个方法  用于获取给定目录下的所有的文件及其目录的绝对路径
    public  static void  getAllFilePath(File srcFile){
      File[] files =   srcFile.listFiles();
      // 判断  是否可以得到目录数组
        if(files != null){
            //遍历该数组  得到每一个File对象
            for (File  file :files){
                //判断该File表示的是目录还是文件
                if(file.isDirectory()){
                    getAllFilePath(file);//递归
                }else{
                    System.out.println(file.getAbsolutePath());
                }
            }
        }
    }
}

重命名

public class FileDemo6 {
    /*
    D:\IO\百家讲坛\001_百家讲坛【栏目宗旨为建构时代常识,享受智慧人生】_于丹_论语_孝敬之道.avi
    D:\IO\百家讲坛\002_百家讲坛【栏目宗旨为建构时代常识,享受智慧人生】_于丹_论语_智慧之道.avi
    D:\IO\百家讲坛\003_百家讲坛【栏目宗旨为建构时代常识,享受智慧人生】_于丹_论语_学习之道.avi
    D:\IO\百家讲坛\004_百家讲坛【栏目宗旨为建构时代常识,享受智慧人生】_于丹_论语_诚信之道.avi
    D:\IO\百家讲坛\005_百家讲坛【栏目宗旨为建构时代常识,享受智慧人生】_于丹_论语_知世之道.avi
    D:\IO\百家讲坛\006_百家讲坛【栏目宗旨为建构时代常识,享受智慧人生】_于丹_论语_忠恕之道.avi
对以上文件进行重命名
     */
    public static void main(String[] args) {
        File file = new File("D:\\IO\\百家讲坛");
        File[] files = file.listFiles();
        System.out.println(files);
        for (File f : files) {
            String oldName = f.getName();
            String newName = oldName.substring(0, oldName.indexOf("_")) + oldName.substring(oldName.lastIndexOf("_"));
            //boolean renameTo(File dest)重命名由此抽象路径名表示的文件
            File ff = new File(file,newName);
            f.renameTo(ff);//将当前文件重命名到ff所表示的抽象路径
        }
    }
}

重命名还可以对文件进行移动

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值