文件基础,字节流字符流的读入写出,文件目录的创建与删除

162 阅读3分钟

文件基础

文件:保存数据的地方,声音、图片、文字、视频、音频

文件流:

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

​					输入流

java程序(内存)        <-------

​						
                                      ------> 文件磁盘(文件、数据源)

​				         输出流

文件创建的三种方法

 public static void main(String[] args) throws IOException {
        file1();
        file2();
        file3();
    }
    // 文件创建的三种方法
    public static void file1() {
        File file = new File("D:\\a.txt");
        try {
            file.createNewFile();
            System.out.println("文件创建成功file1");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void file2() {
        File parent = new File("D:\\");
        File file = new File(parent,"b.txt");
        try {
            file.createNewFile();
            System.out.println("文件创建成功file2");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void file3() {
        String parentFile1 = "D:\\";
        String parentFile2 = "D:/";
        File file = new File(parentFile1,"c.txt");
        try {
            file.createNewFile();
            System.out.println("文件创建成功file3");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

文件常用的操作

  1. getName
  2. getAbsolutePath
  3. getParent
  4. length
  5. exists
  6. isFile
  7. isDirectory

目录操作和文件删除

目录创建:目录被当做一种文件进行操作

  • 目录的创建于删除
  • 多级目录创建使用mkdirs( )
public class Directory_ {
    public static void main(String[] args) {
        // 创建一个目录
        String parentFile  = "d:\\demo02";
        File file = new File(parentFile);
        file.mkdir();
        if(file.exists()) {
            file.delete();
            System.out.println("删除成功");
        }
    }
}

IO流的分类

  1. 按操作数据单位不同分为:字节流(8 bit)二进制文件,字符流(按字符)文本文件
  2. 按数据流的流向不同分为:输入流,输出流
  3. 按流的角色的不同分为:节点流,处理流/包装流
抽象基类字节流字符流
输入流InputStreamReader
输出流OuputStreamWriter
  • 这四个父类都是抽象类, 共同点都集成了Closeable接口

IO流体系图-常用的类

字节流的使用,读入写出案例,拷贝图片

public static void main(String[] args) {
    String a= "D:\\a.jpg";
    int A=0;
    String  Atext=null;
    String Btext=null;
    String b= "D:\\xxx\\a.jpg";
    byte [] bytes = new byte[1024];
    // 字节读取与写入
    // 字节读取
    FileInputStream inputStream =null;
    FileOutputStream outputStream  =null;
    try {
        inputStream = new FileInputStream(a);
        outputStream = new FileOutputStream(b,true);
        while((A = inputStream.read(bytes))!=-1) {
            // 将读取到的文件存入Atext中
            outputStream.write(bytes);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

FileReader 和File Writer介绍

FileWriter常用方法

  1. new FileWriter(File/String):覆盖模式,相当于流的指针在首端
  2. new FileWriter(File/String,true):追加模式,相当于流的指针在尾端3) write(int):写入单个字符
  3. write(char):写入指定数组
  4. write(char[,off,len):写入指定数组的指定部分 write (string):写入整个字符串
  5. write(string,off,len):写入字符串的指定部分 相关API: String类:toCharArray:将String转换成char[]
  6. FileWriter使用后,必须要关闭(close) 或者刷新(flush) ,否则写入不到指定的文件

节点流和处理流的区别和联系

  1. 节点流是底层流/低级流,直接跟数据源相接。

  2. 处理流(包装流)包装节点流,既可以消除不同节点流的实现差异,也可以提供更方便的方法来完成输入输出

  3. 处理流(也叫包装流)对节点流进行包装,使用了修饰器设计模式,不会直接与数据源相连

处理流的功能主要体现在以下两个方面

  1. BufferedReader 和 BufferedWriter属于字符流,是按照字符来读取数据的

  2. 关闭时处理流,只需要关闭外层流即可