文件IO基础知识


文件

什么是文件:

  • 文件.对我们并不陌生,文件是保存数据的地方,比如大家经常使用的word文档,txt文件.excel文件.…..都是文件。它既可以保存一张图片,也可以保持视频,声音.….

一、文件流

文仔在程序中是以流的形式来操作的

流:数据在数据源(文件)和程序(内存)之间经历的路径

输入流:数据从数据源(文件)到程序(内存)的路径

输出流:数据从程序(内存)到数据源(文件)的路径

二、常用的文件操作

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

案例:

请在e盘下,创建文件news1.txt、news2.txt、news3.txt ,用三种不同方式创建

package com.hspedu.file;

import org.junit.Test;

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

/**
 * @author DL5O
 * @version 1.0
 * 演示创建文件
 */
public class FileCrate {
    public static void main(String[] args) {

    }

    //方法1 new File(String pathname);
    public static void create01(){
        String filePath = "e:\\news1.txt";
        File file = new File(filePath);

        try {
            file.createNewFile();
            System.out.println("文件创建成功...");
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("文件创建失败...");
        }
    }

    //方式二:new File(File parent,String child) //根据父目录文件+子路径构建
    //e:\\news2.txt
    //parent:e:\\
    //child:news2.txt
    public static void create02(){
        String parent = "e:\\";
        String child = "news2.txt";
        //这里的file对象,在java程序中,只是个对象而已
        //只有执行了createNewFile方法才进行创建
        File file = new File(parent, child);

        try {
            file.createNewFile();
            System.out.println("文件创建成功..");
        } catch (IOException e) {
            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 {
            file.createNewFile();
            System.out.println("文件创建成功..");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2.2常用的文件操作

getName、getAbsolutePath、getParent、length、exists、isFile、isDirectory

@Test
//获取文件的信息
public void info(){
    //创建文件对象
    File file = new File("e:\\news1.txt");

    //调用相应的方法得到对应的信息
    System.out.println("文件名字=" + file.getName());

    //getName、getAbsolutePath、getParent、length、exists、isFile、isDirectory
    System.out.println("文件的绝对路径=" + file.getAbsolutePath());
    System.out.println("文件的父级目录=" + file.getParent());
    System.out.println("文件的大小(字节)=" + file.length());//在utf-8中一个汉字3个字节
    System.out.println("文件是否存在=" + file.exists());//true
    System.out.println("是不是一个文件=" + file.isFile());//true
    System.out.println("是不是一个目录=" + file.isDirectory());//false

}

2.3目录的操作和文件删除

mkdir 创建一级目录,mkdirs创建多级目录、delete删除多级目录

案例:

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

//判断 e:\\demo02 是否存在,存在就删除,否则提示不存在
//这里我们可以体会到,在java编程中,目录也被当作文件
@Test
public void m2(){
    String filePath = "e:\\demo02";
    File file = new File(filePath);
    if(file.exists()){
        if (file.delete()){
            System.out.println("该目录删除成功...");
        }else{
            System.out.println("该目录删除失败...");
        }
    }else{
        System.out.println("该目录不存在...");
    }
}

//判断  e:\\demo\la\\b\\c目录是否存在,如果存在就提示已经存在,否则就创建
@Test
public void m3(){
    String directoryPath = "e:\\demo\\a\\b\\c";
    File file = new File(directoryPath);
    if(file.exists()){
        if(file.exists()){
            System.out.println( directoryPath + " 该目录存在...");
        }
    }else{
        if (file.mkdirs()){//创建一级目录使用mkdir 方法 创建多级目录使用mkdirs目录
            System.out.println("该目录创建成功");
        }else{
            System.out.println("该目录创建失败");
        }
    }
}

三、IO流原理及流的分类

3.1JAVA IO流原理

  1. I/O是Input/Output的缩写,I/O技术是非常实用的技术,用于处理数据传输。

    • 如读/写文件,网络通讯等
  2. Java程序中,对于数据的输入/输出等操作以“流(Stream)”的方式进行

  3. Java.io包下提供了各种"流"类和接口,用以获取不同类的数据,并通过方法输入或输出数据

  4. 输入input读取外部数据(磁盘、光盘等存储设备的数据)到程序(内)中

  5. 输出output:将程序(内存)数据输出到磁盘、光盘等存储设备中

3.2流的分类

按操作数据单位的不同分为:字节流(8bit) 二进制文件,字符流(按字符,对应几个字节)文本文件。

按数据流的流向不同分为:输入流、输出流

按流的角色的不同分为:节点流,处理流/包装流

注意:

  • 以上的四个类都是抽象类

文件和流的关系

  • 内存通过输入流拿到文件(磁盘)中的数据
  • 内存通过输出流把数据往文件(磁盘)中写入数据

posted @ 2022-04-23 09:36  DL50  阅读(306)  评论(0编辑  收藏  举报