Java基础 -IO入门简介、文件操作、与IO流分类简述

IO流入门概念

文件概念

什么是文件

文件是保存数据的地方,比如大家经常使用的word文档,txt文件,excel文件…都是文件。它既可以保存一张图片,也可以保存视频、声音…

文件流

请添加图片描述

请添加图片描述

文件常用操作

创建文件对象相关构造器和方法

请添加图片描述

//注意这三个构造器
new File(String pathname)	//根据路径构建一个File对象
new File(File parent,String child)	//根据父目录文件 + 子路径构建
new File(String parent,String child)	//根据父目录 + 子路径构建

创建文件案例

咱们用Test这个玩意测试

alt + Enter导入Test

package com.taotao.file;

import com.sun.media.jfxmediaimpl.HostUtils;
import org.testng.annotations.Test;

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

/**
 * Create By 刘鸿涛
 * 2022/1/25 13:37
 */
public class FileCreate {
    public static void main(String[] args) {

    }

    //方式1 new File(String pathname),咱们依然用Test测试
    //发现不能在C盘根目录创建
    @Test
    public void create01(){
        String filePath = "d:\\news1.txt";
        File file = new File(filePath);

        try {
            file.createNewFile();
            System.out.println("创建成功");

        } catch (IOException e) {
            System.out.println("失败");
            e.printStackTrace();
        }
    }

    //方式2 new File(File parent,String child) //根据父目录文件 + 子路径构建
    @Test
    public void create02(){
        //父目录文件夹
        File parentFile = new File("d:\\");         //备孕
        String fileName = "news2.txt";                       //起名
        File file = new File(parentFile, fileName);          //怀孕
        try {
            System.out.println("success");
            file.createNewFile();                            //生小孩
        } catch (IOException e) {
            System.out.println("Wrong");
            e.printStackTrace();
        }
    }
    @Test
    //方式3 new File(String parent,String child) //根据父目录 + 子路径构建
    public void create03(){
        String parentPath = "e:\\";
        String fileName = "news3.txt";
        File file = new File(parentPath,fileName);

        try {
            System.out.println("success");
            file.createNewFile();
        } catch (IOException e) {
            System.out.println("Wrong");
            e.printStackTrace();
        }
    }
}

注意

  1. 不能在C盘根目录创建

  2. 但是可以在C盘任何子目录里创建文件

  3. (根目录)C盘第一次点进去的目录

获取文件相关信息

请添加图片描述

getName,getAbsolutePath,getParent,length,exists,isFile,isDirectory

package com.taotao.file;

import org.testng.annotations.Test;

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

/**
 * Create By 刘鸿涛
 * 2022/1/26 6:49
 */
public class FileInformation {
    public static void main(String[] args) {

    }

    @Test
    //获取文件的信息
    public void info(){
        //先创建对象
        File file = new File("d:\\news1.txt");
        try {
            System.out.println("yes");
            file.createNewFile();
        } catch (IOException e) {
            System.out.println("no");
            e.printStackTrace();
        }

//        getName,getAbsolutePath,getParent,length,exists,isFile,isDirectory
        //调用相应方法得到相应信息

        System.out.println("文件名字:" + file.getName());            //news1.txt
        System.out.println("文件绝对路径:" + file.getAbsolutePath()); //d:\news1.txt
        System.out.println("文件父级目录:" + file.getParent());       //d:\
        System.out.println("文件大小(字节):" + file.length());        //0
        System.out.println("文件是否存在:" + file.exists());          //T
        System.out.println("是不是一个文件:" + file.isFile());         //T
        System.out.println("是不是一个目录:" + file.isDirectory());    //F

    }
}


目录的操作和文件删除

mkdir创建一级目录、mkdirs创建多级目录、delete删除空目录或文件

请添加图片描述

delete
package com.taotao.file;

import org.testng.annotations.Test;

import java.io.File;

/**
 * Create By 刘鸿涛
 * 2022/1/26 7:20
 */
public class Directory_ {
    public static void main(String[] args) {

    }
    //判断 d:\\news1.txt 是否存在,如果存在就删除
    @Test
    public void m1(){
        File file = new File("d:\\news1.txt");
        if(file.exists()){
            file.delete();
            System.out.println("删除成功");
        }else{
            System.out.println("删除失败");
        }
    }

    //删除目录操作同样可以使用
    //注意:好像只能删除空目录,如果目录中有内容,file.delete()依然会执行,但是不会成功
    @Test
    public void m2(){
        File file = new File("d:\\demo");
        if(file.exists()){
            file.delete();
            System.out.println("success");
        }else{
            System.out.println("wrong");
        }
    }
}


mkdir、mkdirs
package com.taotao.file;

import org.testng.annotations.Test;

import java.io.File;

/**
 * Create By 刘鸿涛
 * 2022/1/26 7:20
 */
public class Directory_ {
    public static void main(String[] args) {

    }

    @Test
    public void m1(){
        String directoryPath = "d:\\demo";
        File file = new File(directoryPath);
        if(file.exists()){
            System.out.println("已经存在");
        }else{
            if(file.mkdir()){   //创建一级目录用mkdir(),创建多级目录用mkdirs()
                System.out.println(directoryPath + "创建成功");
            }else{
                System.out.println(directoryPath + "创建失败");
            }
        }
    }
}


注意
  1. delete好像只能删除空目录,如果目录中有内容,file.delete()依然会执行,但是不会成功
  2. 被删除的内容不会放入回收站,直接清零
  3. mkdir()方法返回的是一个boolean
  4. 创建一级目录用mkdir(),创建多级目录用mkdirs()

IO流原理及流的分类

Java IO流原理

  1. I/O是input/Output的缩写,I/O技术是非常实用的技术,用于处理数据传输,如读/写文件,网络通讯等
  2. Java程序中,对于数据的输入/输出操作以“流(stream)”的方式进行。
  3. java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过方法输入或输出数据
  4. 输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中
  5. 输出output:将程序(内存)数据输出到磁盘、光盘等存储设备中

请添加图片描述

流的分类

  • 按操作数据单位不同分为:字节流(8bit)【二进制文件】,字符流(按字符)【文本文件】
  • 按数据流的流向不同分为:输入流,输出流
  • 按流的角色的不同分为:节点流,处理流/包装流
(抽象基类)字节流字符流
输入流InputStreamReader
输出流OutputStreamWriter
  1. Java的IO流共涉及40多个类,实际上非常规则,都是从如上4个抽象基类派生的
  2. 由这四个类派生出来的子类名称都是以其父类名作为子类名后缀
注意

InputStream、OutputStream、Reader、Writer都是抽象类,都是不能实例化,需要他的实现子类进行实例化

IO流体系图-常用的类

IO流体系图

这里写图片描述

文件 VS 流

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鬼鬼骑士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值