Java 超详细讲解IO操作字节流与字符流

目录
  • IO操作
    • 字节流
      • FileInputStream
      • FileOutputStream
      • 字节流读写案例
    • 字符流
      • FileReader
      • FileWriter
    • 字节流与字符流的区别

IO操作

字节流

  • java.io.InputStream 输入流,主要是用来读取文件内容的。
  • java.io.OutputStream 输出流,主要是用来将内容字节写入文件的。

FileInputStream

该流用于从文件读取数据,它的对象可以用关键字 new 来创建。

有多种构造方法可用来创建对象。

可以使用字符串类型的文件名来创建一个输入流对象来读取文件

InputStream f = new FileInputStream("D:/hello");

也可以使用一个文件对象来创建一个输入流对象来读取文件。我们首先得使用 File() 方法来创建一个文件对象:

File f = new File("D:/hello");
InputStream in = new FileInputStream(f);

FileOutputStream

该类用来创建一个文件并向文件中写数据。

如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。

有两个构造方法可以用来创建 FileOutputStream 对象。

使用字符串类型的文件名来创建一个输出流对象:

OutputStream f = new FileOutputStream("D:/hello");

也可以使用一个文件对象来创建一个输出流来写文件。我们首先得使用File()方法来创建一个文件对象:

File f = new File("D:/hello");
OutputStream fOut = new FileOutputStream(f);

字节流读写案例

读取D:/hello.txt文件中的内容再输入到文件D:/test.txt中

      public class Mk {
        public static void main(String[] args) throws IOException {
            File file=new File("D://hello.txt");
            File file1= new File("D://test.txt");
            InputStream is=new FileInputStream(file);
            OutputStream out=new FileOutputStream(file1);
            //定义byte数组用来暂存数据
            byte[] buf = new byte[1024];
            //读取Is中的内容存到buf
            is.read(buf);
            //将buf中的内容写入out
            out.write(buf);
            is.close();
            out.close();
        }
        }

字符流

FileReader

写入文件实例

public class A {
    public static void main(String[] args) throws IOException {
        FileWriter fw = new FileWriter("user.txt", true);
        fw.write("你好中国1");
        fw.write("你好中国2");
        fw.write("你好中国3");
        fw.close();
    }
}

FileWriter

读取文件实例

这里我把内容换行了

br.ready()是判断这一行流是否为空

br.readLine()是输出一行,然后自动光标指到下一行。

public class A {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("user.txt"));
        while (br.ready()) {
            System.out.println(br.readLine());
        }
        br.close();
    }
}

字节流与字符流的区别

字节流和字符流使用是非常相似的,那么除了操作代码的不同之外,还有哪些不同呢?

字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的 字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是如果字符流不使用close方法的话,则不会输出任何内容,说明字符流用的是缓冲区,并且可以使用flush方法强制进行刷新缓冲区,这时才能在不close的情况下输出内容

那开发中究竟用字节流好还是用字符流好呢?

在所有的硬盘上保存文件或进行传输的时候都是以字节的方法进行的,包括图片也是按字节完成,而字符是只有在内存中才会形成的,所以使用字节的操作是最多的。 如果要java程序实现一个拷贝功能,应该选用字节流进行操作(可能拷贝的是图片),并且采用边读边写的方式(节省内存)。

到此这篇关于Java 超详细讲解IO操作字节流与字符流的文章就介绍到这了,更多相关Java IO操作内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java的File类和IO流其实真的不难

    目录 IO流: File类: 字节输出流: 字节输入流(从文件读取到控制台): 字符输出流: 字符输入流: 总结 IO流: IO流概述: IO:输入/输出(Input/Output) 流:是一种抽象概念,是对数据传输的总称.也就是说数据在设备间的传输称为流,流的本质是数据传输IO流就是用来处理设备间数据传输问题的, 常见的应用:文件复制;文件上传;文件下载等等,总而言之,涉及到传输的,都涉及到流. IO流体系图: 既然IO是涉及文件的操作,那么一定离不开文件操作的技术: File类: File

  • Java编程中字节流与字符流IO操作示例

     IO流基本概念 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的对象都是在IO包上 流按操作数据分为两种:字节流和字符流 流按流向分为:输入流,输出流. 字节流的抽象基类:InputStream,OutputStream 字符流的抽象基类:Reader,Writer 注:由这4个类派生出来的子类名称都是以其父类名作为子类名的后缀. 如:InputStream的子类:FileInputStream 如:Reader的子类FileReader 如创建一个F

  • 新手小白看过来学JAVA必过IO流File字节流字符流

    目录 IO简介 1.流Stream 2.IO流的继承结构 3 File文件类 3.1概述 3.2创建对象 3.3常用方法 3.4 练习:测试常用方法 4.字节流读取 4.1 InputStream抽象类 4.2 FileInputStream子类 4.3 BufferedInputStream子类 4.4 练习:字节流读取案例 5.字符流读取 5.1 Reader抽象类 5.2 FileReader子类 5.3 BufferedReader子类 5.4 练习:字符流读取案例 6.字节流写出 6.

  • Java IO流之节点流与字符流的相关知识总结

    一.File file是文件和目录路径名的抽象表示 1.1 File的用法 用法: File file = new File("路径名"); //如 File file = new File("L:\\FileTestDemo\\AAA\\aaa.txt"); 注意:在windows中,路径名不能使用单个的\,单个的\为转义字符,可以使用\\,//或/ 1.2 File的常用方法 1.boolean createNewFile() 当且仅当具有此名称的文件尚不存在时

  • Java字节流和字符流总结IO流!

    目录 从接收输入值说起 字节流读取 字符流读取 Scanner 读取 什么是 IO 流 字节流和字符流 字节流 字节输入流 字节输出流 缓冲流的原理 字符流 字符输入流 字符输出流 RandomAccessFile 总结 从接收输入值说起 在日常的开发应用中,有时候需要直接接收外部设备如键盘等的输入值,而对于这种数据的接收方式,我们一般有三种方法:字节流读取,字符流读取,Scanner 工具类读取. 字节流读取 直接看一个例子: public class Demo01SystemIn { pub

  • 一起来了解Java的File类和IO流

    目录 IO流: File类: 字节输出流: 字节输入流(从文件读取到控制台): 字符输出流: 字符输入流: 总结 IO流: IO流概述: IO:输入/输出(Input/Output) 流:是一种抽象概念,是对数据传输的总称.也就是说数据在设备间的传输称为流,流的本质是数据传输IO流就是用来处理设备间数据传输问题的, 常见的应用:文件复制;文件上传;文件下载等等,总而言之,涉及到传输的,都涉及到流. IO流体系图: 既然IO是涉及文件的操作,那么一定离不开文件操作的技术: File类: File

  • 一起来学习Java IO的转化流

    目录 Java IO 转化流 乱码引起转换流 读取乱码 转换流介绍 InputStreamReader OutputStreamWriter 总结 Java IO 转化流 乱码引起转换流 读取乱码 读取电脑磁盘上的Java.txt文件内容,文件路径: e:\Java\Java.txt,文件编码格式为 utf-8 . 代码示例: import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.F

  • Java 超详细讲解IO操作字节流与字符流

    目录 IO操作 字节流 FileInputStream FileOutputStream 字节流读写案例 字符流 FileReader FileWriter 字节流与字符流的区别 IO操作 字节流 java.io.InputStream 输入流,主要是用来读取文件内容的. java.io.OutputStream 输出流,主要是用来将内容字节写入文件的. FileInputStream 该流用于从文件读取数据,它的对象可以用关键字 new 来创建. 有多种构造方法可用来创建对象. 可以使用字符串

  • Java超详细讲解SpringMVC如何获取请求数据

    目录 1.获得请求参数 1)基本类型参数:​​​​​​​   2)POJO类型参数: 3)数组类型参数   4)集合类型参数   2.请求乱码问题 3.参数绑注解@RequestParam​​​​​​​ 4.获得Restful风格的参数 5.自定义类型转换器 6.获得请求头 7.文件上传 8.小结 1.获得请求参数 客户端请求参数的格式是:name=value&name=value- - 服务器端要获得请求的参数,有时还需要进行数据的封装,SpringMVC可以接收如下类型的参数: 1)基本类型

  • Java 超详细讲解数据结构的应用

    目录 一.bfs 二.双端队列 三.算法题 1.kotori和迷宫 2.小红找红点 3.小红玩数组  一.bfs bfs(广度优先搜索),类似二叉树的层序遍历,利用队列完成.一般用于求最短路. 图的最短路问题: 给定一个无向图,每条边的长度都是1.求1号点到x号点的最短距离. 顶点数n  边数为m q次询问  输入x 输出1到x的最短距离. 若1号点到x不连通,则输出-1 二.双端队列 双端队列的应用(区间翻转): 对于长度为n的数组,给定一个长度为m的区间,区间初始位置为a[1]到a[m].

  • Java 超详细讲解字符流

    目录 一.字符流的由来 二.编码表 字符集: Unicode字符集: UTF-8编码规则: 三.字符串中的编码解码问题 编码方法(IDEA): 解码方法(IDEA): 四.字符流的编码解码问题 四.字符流写数据的五种方法 五.字符流读数据的两种方法 一.字符流的由来 由于使用字节流操控中文时不是很方便,Java就提供了字符流来进行操控中文 实现原理:字节流+编码表 为什么用字节流进行复制带有中文的文本文件时没有问题? 因为底层操作会自动进行字节拼接成中文 怎样识别该字节是中文呢? 汉字在存储时,

  • Java超详细讲解类的继承

    目录 写在前面 1.子类的创建 1.1子类的创建方法 1.2调用父类中特定的构造方法 2.在子类中访问父类成员 3.覆盖 3.1覆盖父类中的方法 3.2用父类的对象访问子类的成员 4.不可被继承的成员和最终类 实例java代码 写在前面 类的继承可以在已有类的基础上派生出来新的类,不需要编写重复的代码,提高了代码的复用性,是面向对象程序设计的一个重要的特点,被继承的类叫做父类,由继承产生的新的类叫做子类,一个父类可以通过继承产生多个子类,但是与C++不同的是Java语言不支持多重继承,即不能由多

  • Java超详细梳理IO流的使用方法上

    目录 Java语言的输入输出类库 1.流的概念 2.流的分类 3.流的作用 4.输入输出流类库 使用InputStream和OutputStream流类 1.基本输入输出流 1.InpitStream流类 2.OutputStream流类 2.输入输出流的应用 2.1文件输入输出流 2.2顺序输入流 2.3管道输入输出流 2.4过滤输入输出流 2.5标准输入输出 你要学会: 流的概念 处理字节流的类 处理字符流的类 Java标准输入输出 文件管理类 Java语言的输入输出类库 1.流的概念 流是

  • Java 超详细讲解数据结构中的堆的应用

    目录 一.堆的创建 1.向下调整(以小堆为例) 2.创建堆 3.创建堆的时间复杂度 二.堆的插入和删除 1.堆的插入 2.堆的删除 三.堆的应用 1.堆排序 2.top-k问题 [求最小的K个数] 四.常用接口的介绍 1.PriorityQueue的特性 2.优先级队列的构造 一.堆的创建 1.向下调整(以小堆为例) 让parent标记需要调整的节点,child标记parent的左孩子(注意:parent如果有孩子一定先是有左孩子) 如果parent的左孩子存在,即:child < size,

  • Java 超详细讲解异常的处理

    目录 1.异常的概念和体系结构 1.1异常的概念 1.2异常的体系结构及分类 2.异常的处理 2.1防御式编程 2.2异常地抛出 2.3异常的捕获 (1)异常声明throws (2)try-catch捕获并处理 (3)finally 2.4异常的处理流程 3.自定义异常类 1.异常的概念和体系结构 1.1异常的概念 Java中,在程序执行过程中发生的不正常行为称为异常.比如之前一直遇到的: (1)算数异常 System.out.prinntln(10/0); (2)数组越界异常 int[] ar

  • Java 超详细讲解核心类Spring JdbcTemplate

    目录 JdbcTemplate概述 JdbcTemplate开发步骤 JdbcTemplate快速入门 Spring产生JdbcTemplate对象 JdbcTemplate的常用操作 修改操作 删除和查询全部操作 查询单个数据操作 本章小结 JdbcTemplate概述 它是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装.spring框架为我们提供了很多的操作 模板类.例如:操作关系型数据的JdbcTemplate和HibernateTemplate,操作nos

  • Java 超详细讲解SpringMVC拦截器

    目录 拦截器(interceptor)的作用 拦截器和过滤器区别 拦截器快速入门 多拦截器操作 拦截器方法说明 本章小结 拦截器(interceptor)的作用 Spring MVC 的 拦截器 类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行 预处理 和 后处理 . 将拦截器按一定的顺序联结成一条链,这条链称为 拦截器链(Interceptor Chain) .在访问被拦截的方 法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用.拦截器也是AOP思想的具体实现.

随机推荐