IO流(1)

1.File类

1.概述

File类是文件操作类,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。

它可以是存在的,也可以是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的。

2.File构造方法:

​ File(String pathname):通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例

​ 例如:File f=new File(“c:\\itcast”);

​ File(String parent, String child):从父路径名字符串和子路径名字符串创建新的 File实例

​ 例如:File f=new File(“c:\\itcast”,“itheima”); //c:\itcast\itheia

​ File(File parent, String child):从父抽象路径名和子路径名字符串创建新的 File实例

​ 例如:File f=new File(“c:\\itcast”);

​ File f1=new File(f,“itheima”);//c:\itcast\itheima

package cn.itfenghua01;

import java.io.File;

public class FileDemo {
    public static void main(String[] args) {
        File f1 =new File("E:\\dev\\code");
        System.out.println(f1);
        File f2 = new File("E:\\Dev","code");
        System.out.println(f2);
        File f3 = new File("E:");
        File f4 = new File(f3,"\\Dev\\code");
        System.out.println(f4);
    }
}
3.常用方法:

​ 创建:

​ createNewFile():当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件

​ mkdir():创建目录,当父目录不存在时,创建失败,不会报错,返回false

​ mkdirs():当父目录不存在时,连同父目录一起创建

package cn.itfenghua01;

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

public class FileDemo02 {
    public static void main(String[] args) throws IOException {
        File f1 = new File("D:\\IO\\java.txt");
        //在目录下创建一个文本文件
        System.out.println(f1.createNewFile());
        File f2 = new File("D:\\IO\\javaSE");
        //在目录下创建一个文件夹
        System.out.println(f2.mkdir());
        File f3 = new File("D:\\IO\\javaWEB\\javaEE\\java");
        //创建多级目录
        System.out.println(f3.mkdirs());

    }
}

​ 判断:

​ isDirectory():判断是否是目录

​ isFile():判断是否是文件

​ exists():判断File对象是否存在

​ 获取:

​ getAbsolutePath():获取绝对路径

​ getPath():获取相对路径

​ getName():获取文件或者目录名称

​ list():获取文件和目录的名称字符串数组

​ listFiles():获取文件和目录的File对象数组

​ 删除:

​ delete():删除文件或者目录

​ 注意:当目录中包含子目录或者文件时不能删除

4、绝对路径和相对路径的区别

​ 绝对路径:完整的路径名,不需要任何其他信息就可以定位它所表示的文件。例如:E:\itcast\java.txt

​ 相对路径:必须使用取自其他路径名的信息进行解释。例如:myFile\java.txt

2 递归

递归指的是方法定义中调用方法本身的现象

递归必须注意:

​ 1.找出递归规律

​ 2.指定递归出口

package cn.itfenghua02;

import java.io.File;

public class DiGuiDemo {
    public static void main(String[] args) {
        File file = new File("D:\\IO");
        getAllFilePath(file);
    }

    public static void getAllFilePath(File file) {
        //获取所有的File的文件名
        File[] arrfile = file.listFiles();
//        for (File aa:arrfile){
//            System.out.println(aa);
//        }
        //判断File数组是否为空
        if (arrfile != null) {
            for (File files : arrfile) {
                //是目录则递归调用
                if (files.isDirectory()) {
                    getAllFilePath(files);
                    //不是则获取绝对路径
                } else {

                    System.out.println(files.getAbsolutePath());
                }

            }
        }
    }
}

3 IO流

1.IO:输入/输出(Input/Output)

2.流:是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输

3.流的分类:

​ 1.按照流向分:

​ 输入流:读取硬盘数据

​ 输出流:写入硬盘数据

​ 2.按照数据类型分:

​ 字节流:数据传输单位是字节

​ 字符流:数据传输单位是字符

4.字节输入输出流的超类

​ InputStream:这个抽象类是表示字节输入流的所有类的超类

​ OutputStream:这个抽象类是表示字节输出流的所有类的超类

​ 注意:其子类的特点均是以其父类名作为子类名的后缀

5.FileOutputStream

​ 1.构造方法

​ FileOutputStream(String name):创建文件输出流以指定的名称写入文件

​ 注意:其中隐藏了一个new File(String name)操作

​ FileOutputStream(String name)和FileOutputStream(new File(String name))一样

​ FileOutputStream(String name,boolean append):当append为true时则字节将写入文件的末尾而不是开头 (向原有文档内容后追加)

​ 2.写入数据的方法:

​ write(int b):将指定的字节写入此文件输出流 一次写一个字节数据

​ write(byte[] b):将 b.length字节从指定的字节数组写入此文件输出流 一次写一个字节数组数据

​ write(byte[] b, int off, int len):off指代b数组起始索引,len不能为负数,也不能大于len-off

​ 3.不同操作系统换行符:

​ windows:\r\n

​ linux:\n

​ mac:\r

6.FileInputStream(String name):

​ 1.通过打开与实际文件的连接来创建一个FileInputStream ,该文件由文件系统中的路径名name命名

​ 2.读取数据的方法

​ read():一次读取一个字节,当返回值为-1时,表示文档所有字节读取结束

​ read(byte[] b):一次读取最多b.length个字节的数据,当返回值为-1时,表示文档读取结束

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值