JavaSE基础语法之I/O流05

一、I/O流整体结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、常见I/O类和方法

File类

构造方法

  • File​(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例。
  • File​(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
  • File​(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例。
File f1 = new File("路径名");

常用方法

  • boolean createNewFile​() 创建文件
  • boolean mkdir​() 创建目录
  • boolean mkdirs​() 创建多级目录
  • boolean exists​()
  • boolean delete​()
  • String getName​() 返回由此抽象路径名表示的文件或目录的名称。
  • String getPath​() 将此抽象路径名转换为路径名字符串。
  • String[] list​() 返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。
  • File[] listFiles​() 返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。

字节流

抽象基类:InputStream、OutputStream
子类实现:FileInputStream、FileOutputStream等。

FileOutputStream类写文件

FileOutputStream类用于将文件写入File。
常用方法

  • void write​(int b) 将指定的字节写入此文件输出流。
  • void write​(byte[] b) 将 b.length字节从指定的字节数组写入此文件输出流。
  • void write​(byte[] b, int off, int len) 将 len字节从指定的字节数组开始,从偏移量 off开始写入此文件输出流。
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileOutputStreamDemo {
    public static void main(String[] args) throws IOException {

        //1、创建字节输出流对象
        FileOutputStream fos = new FileOutputStream("基础语\\fos.txt");

        //2、将指定的字节写入文件
        fos.write(97);

        //3、关闭资源
        fos.close();
    }
}

输出结果:
在这里插入图片描述

FileInputStream类读文件

常用方法

  • int read​() 从该输入流读取一个字节的数据。
  • int read​(byte[] b) 从该输入流读取最多 b.length个字节的数据到一个字节数组。
  • int read​(byte[] b, int off, int len) 从该输入流读取最多 len个字节的数据到字节数组。
import java.io.FileInputStream;
import java.io.IOException;

public class FileInputStreamDemo {
    public static void main(String[] args) throws IOException {
        //1、创建字节输出流对象
        FileInputStream fis = new FileInputStream("基础语法\\fos.txt");

        //2、将指定的字节文件读取
//        int by = fis.read();
//        System.out.println(by);
//        System.out.println((char)by);
        int by;
        while((by = fis.read()) != -1){
            System.out.println((char)by);
        }

        //3、关闭资源
        fis.close();
    }
}

输出结果:
在这里插入图片描述

//一次读取一个字节
        byte[] bys = new byte[1024];
        int len;
        while ((len = fis.read(bys)) != -1){
            System.out.print(new String(bys, 0,len));
        }

输出结果:
在这里插入图片描述

字节缓冲流

字节缓冲流仅仅提供缓冲区,真正的读写数据还是要依靠基本的字节流对象进行操作,可一次读/写多个字节数据。

BufferedInputStream类

  • 构造方法:BufferedInputStream​(InputStream in)

BufferedOutputStream类

  • 构造方法:BufferedOutputStream​(OutputStream out)

字符流

字符流 = 字节流 + 编码表
抽象基类:Reader 、Writer
子类实现:InputStreamReader、OutputStreamWriter

常用方法

  • byte[] getBytes​()
  • byte[] getBytes​(String charsetName) 使用命名的字符集将该 String编码为一系列字节,将结果存储到新的字节数组中。
  • String​(byte[] bytes) 通过使用平台的默认字符集解码指定的字节数组来构造新的 String
  • String​(byte[] bytes, String charsetName) 构造一个新的String由指定用指定的字节的数组解码charset 。

OutputStreamWriter类

构造方法

  • OutputStreamWriter​(OutputStream out) 创建一个使用默认字符编码的OutputStreamWriter。
  • OutputStreamWriter​(OutputStream out, String charsetName) 创建一个使用命名字符集的OutputStreamWriter。

常用方法

  • void write​(char[] cbuf,) 写入字符数组。
  • void write​(int c) 写一个字符
  • void write​(String str, int off, int len) 写一个字符串。

InputStreamReader类

构造方法

  • InputStreamReader​(InputStream in) 创建一个使用默认字符集的InputStreamReader。
  • InputStreamReader​(InputStream in, String charsetName) 创建一个使用命名字符集的InputStreamReader。

常用方法

  • int read​() 读一个字符
  • int read​(char[] cbuf) 将字符读入数组。
public class OutputStreamWriterDemo {
    public static void main(String[] args) throws IOException {

        //创建字符流
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("基础语法\\osw.txt"),"GBK");

        //写数据
        osw.write("中国");
        osw.close();

        //读数据
        InputStreamReader isr = new InputStreamReader(new FileInputStream("基础语法\\osw.txt"),"GBK");
        char[] bys = new char[1024];
        int len;
        while ((len = isr.read(bys)) != -1){
            System.out.print(new String(bys,0,len));
        }

        //关闭资源
        isr.close();
    }
}

输出结果:
在这里插入图片描述

字符缓冲流

字节缓冲流仅仅提供缓冲区,真正的读写数据还是要依靠基本的字节流对象进行操作,可一次读/写多个字节数据。

BufferedReader类

  • 构造方法:BufferedReader​(Reader in)
  • 特有功能:String readLine​() 读一行文字

BufferedWriter类

  • 构造方法:BufferedWriter(Writer out)
  • 特有功能:void newLine() 写一行分隔符

JavaSE入门: JavaSE基础语法01
JavaSE入门: JavaSE基础语法之面向对象和异常02
JavaSE入门: JavaSE基础语法之常见类03
JavaSE入门: JavaSE基础语法之集合框架04

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值