文章目录

  • 一、IO概述
    • 1、什么是IO
    • 2、IO的分类
    • 3、顶级父类
  • 二、字节流
    • 1、字节输出流OutputStream
    • 2、FileOutputStream类
      • 构造方法
      • 写出字节数据
    • 3、字节输入流InputStream
    • 4、FileInputStream类
      • 构造方法
      • 读取字节数据
    • 5、复制案例
  • 三、字符流
    • 1、 字符输入流Reader
    • 2、FileReader类
      • 构造方法
      • 读取字符数据
    • 3、字符输出流Writer
    • 4、FileWriter类
      • 构造方法
      • 写出数据
  • 四、IO异常的处理

一、IO概述

1、什么是IO

Java中I/O操作主要是指使用 java.io 包下的内容进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。

2、IO的分类

根据数据的流向分为:输入流和输出流。
输入流 :把数据从其他设备上读取到内存中的流。
输出流 :把数据从内存中写出到其他设备上的流。
格局数据的类型分为:字节流和字符流。
字节流 :以字节为单位读写数据的流。
字符流 :以字符为单位读写数据的流。

3、顶级父类

输入流 输出流
字节输入流InputStream 字节输出流OutputStream
字符输入流Reader 字符输出流Writer

二、字节流

1、字节输出流OutputStream

java.io.OutputStream抽象类是表示字节输出流的所有类的超类,将指定的字节信息写出到目的地。它定义了字节输出流的基本共性功能方法。
public void close() :关闭此输出流并释放与此流相关联的任何系统资源
public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出
public void write(byte[] b) :将 b.length字节从指定的字节数组写入此输出流
public void write(byte[] b, int off, int len) :从指定的字节数组写入 len字节,从偏移量 off开始输出到此输出流
public abstract void write(int b) :将指定的字节输出流

2、FileOutputStream类

java.io.FileOutputStream类是文件输出流,用于将数据写出到文件。

构造方法

public FileOutputStream(File file) :创建文件输出流以写入由指定的 File对象表示的文件
public FileOutputStream(String name) : 创建文件输出流以指定的名称写入文件
当你创建一个流对象时,必须传入一个文件路径。该路径下,如果没有这个文件,会创建该文件。如果有这个文件,会清空这个文件的数据。

写出字节数据

    //写出字节public static void main(String[] args) throws IOException {//使用File对象创建流对象File file = new File("a.txt");FileOutputStream fos = new FileOutputStream(file);//写出数据fos.write(97); //写出第1个字节fos.write(98); //写出第2个字节fos.write(99); //写出第3个字节//关闭资源fos.close();}
    //写出字节数组public static void main(String[] args) throws IOException {//使用文件名称创建流对象FileOutputStream fos = new FileOutputStream("b.txt");//字符串转换为字节数组byte[] bytes = "你好".getBytes();//写出字节数组数据fos.write(bytes);//关闭资源fos.close();}
    //写出指定长度字节数组public static void main(String[] args) throws IOException {//使用文件名称创建流对象FileOutputStream fos = new FileOutputStream("c.txt");//字符串转换为字节数组byte[] bytes = "hello".getBytes();//写出从索引2开始,2个字节 hefos.write(bytes, 0, 2);//关闭资源fos.close();}
    //数据追加续写public static void main(String[] args) throws IOException {//使用文件名称创建流对象FileOutputStream fos = new FileOutputStream("c.txt");//定义字节数组byte[] words = {97, 98, 99, 100, 101};//遍历数组for (int i = 0; i < words.length; i++) {//写出一个字节fos.write(words[i]);//写出一个换行 换行符号转成数组写出fos.write("\r\n".getBytes());}// 关闭资源fos.close();}

3、字节输入流InputStream

java.io.InputStream抽象类是表示字节输入流的所有类的超类,可以读取字节信息到内存中。它定义了字节输入流的基本共性功能方法。
public void close() :关闭此输入流并释放与此流相关联的任何系统资源
public abstract int read() : 从输入流读取数据的下一个字节
public int read(byte[] b) : 从输入流中读取一些字节数并将它们存储到字节数组 b中

4、FileInputStream类

构造方法

FileInputStream(File file) : 通过打开与实际文件的连接来创建一个FileInputStream,该文件由文件系统中的File对象file命名。
FileInputStream(String name) : 通过打开与实际文件的连接来创建一个FileInputStream,该文件由文件系统中的路径名name命名。

读取字节数据

    //读取字节public static void main(String[] args) throws IOException {//使用文件名称创建流对象FileInputStream fis = new FileInputStream("a.txt");//读取数据返回一个字节/*int read = fis.read();System.out.println(read); //97read = fis.read();System.out.println(read); //98read = fis.read();System.out.println(read); //99read = fis.read();System.out.println(read); //-1System.out.println("========");*///定义变量保存数据int len = 0;while ((len = fis.read()) != -1) {System.out.println(len);}//关闭资源fis.close();}
    //读取字节数组public static void main(String[] args) throws IOException {// 使用文件名称创建流对象.FileInputStream fis = new FileInputStream("a.txt"); //文件中abc//定义变量作为有效个数int len = 0;//定义字节数组作为装字节数据的容器byte[] b = new byte[2];//循环读取while ((len = fis.read(b)) != -1) {//每次读取后 把数组的有效字节部分变成字符串打印System.out.println(new String(b, 0, len));// len 每次读取的有效字节个数}//关闭资源fis.close();}

5、复制案例

    public static void main(String[] args) throws IOException {//指定数据源FileInputStream fis = new FileInputStream("D:\\YOLO\\Pic\\DSC01161.JPG");//指定目的地FileOutputStream fos = new FileOutputStream("D:\\YOLO\\JavaSE");//定义数组byte[] bytes = new byte[1024];//定义长度int len = 0;//循环读取while ((len = fis.read(bytes)) != -1) {//写出数据fos.write(bytes, 0, len);}//关闭资源fos.close();fis.close();}

三、字符流

1、 字符输入流Reader

java.io.Reader抽象类是表示用于读取字符流的所有类的超类,可以读取字符信息到内存中。它定义了字符输入流的基本共性功能方法。
public void close() :关闭此流并释放与此流相关联的任何系统资源。
public int read() : 从输入流读取一个字符
public int read(char[] cbuf) : 从输入流中读取一些字符并将它们存储到字符数组cbuf中

2、FileReader类

构造方法

FileReader(File file) :创建一个新的FileReader给定要读取的File对象
FileReader(String fileName) :创建一个新的 FileReader给定要读取的文件的名称

读取字符数据

    //读取字符public static void main(String[] args) throws IOException {//使用文件名称创建流对象FileReader fr = new FileReader("b.txt");int len = 0;while ((len = fr.read()) != -1) {System.out.println((char) len);}fr.close();}
    //读取字符数组public static void main(String[] args) throws IOException {//使用文件名称创建流对象FileReader fr = new FileReader("b.txt");char[] chars = new char[2];while (fr.read(chars) != -1) {System.out.println(new String(chars));}fr.close();}

3、字符输出流Writer

java.io.Writer抽象类是表示用于写出字符流的所有类的超类,将指定的字符信息写出到目的地。它定义了字节输出流的基本共性功能方法。
void write(int c) 写入单个字符
void write(char[] cbuf) 写入字符数组
abstract void write(char[] cbuf, int off, int len) 写入字符数组的某一部分,off数组的开始索引,len写的字符个数
void write(String str) 写入字符串
void write(String str, int off, int len) 写入字符串的某一部分,off字符串的开始索引,len写的字符个数
void flush() 刷新该流的缓冲
void close() 关闭此流但要先刷新它

4、FileWriter类

构造方法

FileWriter(File file) :创建一个新的 FileWriter给定要读取的File对象
FileWriter(String fileName) :创建一个新的 FileWriter给定要读取的文件的名称

写出数据

    //写出字符public static void main(String[] args) throws IOException {FileWriter fw = new FileWriter("a.txt");//写出数据fw.write(97);fw.write('b');fw.write('C');fw.write(30000);fw.close();}
    //写出字符public static void main(String[] args) throws IOException {FileWriter fw = new FileWriter("a.txt");//写出数据 通过flushfw.write(97);fw.flush();fw.write('b');fw.flush();//写出数据,通过closefw.write('C');fw.close();fw.write(30000); //java.io.IOException: Stream closedfw.close();/*flush 刷新缓冲区 流对象可以继续使用close 先刷新缓冲区 然后通知系统释放资源 流对象不可以再被使用了*/}
    //写出字符数组public static void main(String[] args) throws IOException {//创建流对象FileWriter fw = new FileWriter("a.txt");//字符串转换为字节数组char[] chars = "星际穿越".toCharArray();fw.write(chars); //星际穿越//写出从索引2开始 2个字节fw.write(chars, 2, 2); //穿越fw.close();}
    //写出字符串public static void main(String[] args) throws IOException {//创建流对象//true代表续写FileWriter fw = new FileWriter("a.txt", true);String s = "加勒比海盗";fw.write(s); //加勒比海盗//写出换行fw.write("\r\n");fw.write(s, 1, 3); //勒比海fw.close();}

四、IO异常的处理

JDK7之前

    public static void main(String[] args) {FileWriter fw = null;try {fw = new FileWriter("b.txt");fw.write("hello");} catch (IOException e) {e.printStackTrace();} finally {if (fw != null) {try {fw.close();} catch (IOException e) {e.printStackTrace();}}}}

JDK7之后

    public static void main(String[] args) {try (FileWriter fw = new FileWriter("b.txt")) {fw.write("hello");} catch (IOException e) {e.printStackTrace();}}

19【字节流、字符流】相关推荐

  1. java基础 io流 字节流 字符流 节点流 包装流 转换流 缓冲流 对象流 打印流 Properties类

    目录 1.概念 2.常用的文件操作 2.1 创建文件 2.2 获取文件相关信息 2.3 目录的操作和文件删除 3. IO流原理及流的分类 3.1 流的分类 4.InputStream 字节输入流 4. ...

  2. 字节流字符流IO资源处理PropertiesResourceBundle

    字节流&字符流&IO资源处理&Properties&ResourceBundle - 能够使用字节输入流读取数据到程序//1.创建FileInputStream对象,构 ...

  3. lo流知识(字节流 字符流)

    概述:lo流分为字节流字符流 字节流分为:输出流和输入流 输入流:从文件到控制台(把数据从其他设备输到内存中去)读操作 输出流:从控制台到文件(把数据从内存上输出到别的地方)写操作 按数据类型分: 字 ...

  4. -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流...

    File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) •p ...

  5. IO流1(字节流+字符流+输入流+输出流+节点流+处理流)

    一(IO流简介) 大多数应用程序都需要实现与设备间的数据传输,如键盘输入数据.显示器显示程序运行的结果等.在Java中,将这种通过不同输入输出设备之间的数据传输抽象表述为"流",程 ...

  6. java基础练习复习二:递归字节流字符流二

    本篇是基于java基础练习复习一:递归&字节流&字符流一, 如果对您有帮助 ,请多多支持.多少都是您的心意与支持,一分也是爱,再次感谢!!!打开支付宝首页搜"55672346 ...

  7. IO流之字节流字符流理解

    目录: 一.什么是IO流 : 二.流的分类: 三.字节流解析: 四.字符流解析: 五.序列流(合并流): 一.什么是IO流  简单说就是将数据(文本,音频,视频,图片等)以流的形式进行读写. 举个栗子 ...

  8. IO流 序列化反序列化 Properties 缓冲流 字节流 字符流

    package com.llb.io;import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundE ...

  9. java io流过滤流_JAVA io流 文件流 字节流 字符流 过滤流 缓冲流

    一.概念 1.1.按流向分类: 输入流: 程序可以从中读取数据的流. 输出流: 程序能向其中写入数据的流. 1.2.按数据传输单位分类: 字节流:以字节(8位二进制)为单位进行处理.主要用于读写诸如图 ...

  10. io包下 文件类 字节流 字符流 缓冲流 转换流 序列化流 打印流

    第一章 File类 1.1 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 1.2 构造方法 public File(String pat ...

最新文章

  1. mysqlimport命令
  2. [ linq2db ] 使用LoadWith()对外键进行查询
  3. kubernetes (1)基本概念
  4. 阿里云万郁香:多样付费选择构筑成本最优的弹性体验
  5. 一切的开始源于网络的虚拟
  6. 开源,不是一种道德绑架
  7. 从C#中传递object到lua的一个问题
  8. Rust: Rangechar 'a'..'z' 能干什么?......待续
  9. 激光雕刻机DIY之二:GRBL的下载与参数配置
  10. 计算机系统类型怎么改变,更改文件类型_win7电脑系统文件类型怎么更改?
  11. android超频使用方法,SetCPU高级设置
  12. narwal机器人_国货之光!云鲸NARWAL扫地机器人国外众筹获第一
  13. 如何在iPhone或iPad上使用控制中心
  14. 聊新款Macbook pro
  15. Linux Signal (2): signal函数
  16. oracle lag over 用法,lag()使用方法
  17. 知识点滴 - 无线电频谱划分
  18. linux 终端分屏命令vsp
  19. 全球调研发现,有四分之一的人表示不知道健康和可持续食品是什么
  20. 藉由GZipStream的壓縮,來減少Web Service的傳輸量

热门文章

  1. Linux 静态链接库与动态链接库之一:静态链接库生成及使用
  2. Btree 数据结构
  3. ACL的rule中的deny/permit在各个业务模块里的场景是怎样的
  4. JVM 垃圾回收(GC)
  5. HTML标签结构1.2(媒体标签:图片标签、音频标签、视频标签)
  6. git上如何删除仓库
  7. 0x80073712_win10更新 错误代码: (0x80073712)
  8. 后台管理系统中的登录页面
  9. Python实现VRP常见求解算法——离散量子行为粒子群算法(DQPSO)
  10. flux 中 filter 的使用和原理