java中I/O流之字节流和字符流学习总结(上)

简介: java中I/O流之字节流和字符流学习总结(上)

一、基本内容


如果要进行文件内容的操作那么必须依靠数据流完成,而数据流分为两种:


字节流:InputStream(字节输入流)、OutputStream(字节输出流);


字符流:Reader(字符输入流)、Writer(字符输出流);


字节流理解配图


image.png


字符流理解配图


image.png


字节流与字符流操作的本质区别只有一个:字节流是原生的操作,而字符流是经过处理后的操作。


在进行网络数据传输、磁盘数据保存所保存所支持的数据类型只有:字节。

而所有磁盘中的数据必须先读取到内存后才能进行操作,而内存中会帮助我们把字节变为字符。字符更加适合处理中文。

不管使用的是字节流还是字符流,其基本的操作流程几乎是一样的,以文件操作为例。 创建File类对象 ,主要是指明要操作的文件路径;


1.根据字节流或字符流的子类实例化父类对象 ;

2.进行数据的读取或写入操作;

3.关闭流(close());

4.对于IO操作属于资源处理,所有的资源处理操作(IO操作、数据库操作、网络)最后必须要进行关闭。


二、字节输出流:(OutputStream)(重点)


字节输出流主要以操作byte数据为主,观察java.io.OutputStream类的定义结构:

 字节输出流主要以操作byte数据为主,观察java.io.OutputStream类的定义结构:

 public abstract class OutputStream implements Closeable, Flushable

 OutputStream类实现了Closeable,Flushable两个接口,这两个接口中的方法:

    1. Closeable: public void close() throws IOException;

    2. Flushable: public void flush() throws IOException;


image.png


OutputStream类定义有三个重要的输出操作方法:


将给定的字节数组内容全部输出:public void write(byte b[]) throws IOException

将部分字节数组内容输出:public void write(byte b[], int off, int len) throws IOException(重点)

输出单个字节:public abstract void write(int b) throws IOException

OutputStream是一个抽象类,按照抽象类的基本原则来讲,如果想要取得OutputStream类的实例化对象那么一定需要子类,如果要进行文件的操作,可以使用FileOutputStream类来处理,


这个类的构造方法如下:


接收File类(覆盖):public FileOutputStream(File file) throws FileNotFoundException

接收File类(追加):public FileOutputStream(File file, boolean append)

范例:实现文件的输出


package lisy;
import java.awt.print.Printable;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.sql.Date;
import java.text.SimpleDateFormat;
public class Demo {
    public static void main(String[] args) throws IOException {
        //第一步:定义要输出的文件的File类对象
        File file = new File("e:"+File.separator+"hello"+File.separator+"my.txt");
        //输出信息的时候文件可以不存在,但是目录必须存在
        if(!file.getParentFile().exists()) {//父路径不存在
            file.getParentFile().mkdirs();//创建父路径
        }
        //第二步:利用OutputStream的子类为父类进行实例化
        OutputStream output = new FileOutputStream(file);
        //第三步:输出文字信息
        String msg = "富则达济天下,穷则独善其身";//字符串
        //为了方便输出需要将字符串变为字节数组
        byte data[] = msg.getBytes();//变为字节数组
        output.write(data);//输出数据
        output.close();//关闭流
    }
}


输出文件的部分内容 (一个字符两个字节)


output.write(data,0,10);//输出部分数据


使用循环方式进行单个字节的信息输出


for(int x = 0;x < data.length; x++) {
        output.write(data[x]);//单个字节输出数据
        }


我们可以发现,每次执行完成之后所有的内容都被覆盖了。所以也可以进行数据的追加操作

范例:追加数据


OutputStream output = new FileOutputStream(file,true);//此处为追加操作


如果想要进行换行操作,则可以使用“\r\n”表示。


//第三步:输出文字信息
        String msg = "富则达济天下,穷则独善其身。。。\r\n";//字符串



目录
相关文章
|
25天前
|
Java 调度 开发者
Java线程池ExecutorService学习和使用
通过学习和使用Java中的 `ExecutorService`,可以显著提升并发编程的效率和代码的可维护性。合理配置线程池参数,结合实际应用场景,可以实现高效、可靠的并发处理。希望本文提供的示例和思路能够帮助开发者深入理解并应用 `ExecutorService`,实现更高效的并发程序。
33 10
|
28天前
|
Java 数据库连接 数据库
【潜意识Java】深度分析黑马项目《苍穹外卖》在Java学习中的重要性
《苍穹外卖》项目对Java学习至关重要。它涵盖了用户管理、商品查询、订单处理等模块,涉及Spring Boot、MyBatis、Redis等技术栈。
75 4
|
28天前
|
前端开发 Java 数据库连接
【潜意识Java】深度解读JavaWeb开发在Java学习中的重要性
深度解读JavaWeb开发在Java学习中的重要性
29 4
|
28天前
|
存储 移动开发 算法
【潜意识Java】Java基础教程:从零开始的学习之旅
本文介绍了 Java 编程语言的基础知识,涵盖从简介、程序结构到面向对象编程的核心概念。首先,Java 是一种高级、跨平台的面向对象语言,支持“一次编写,到处运行”。接着,文章详细讲解了 Java 程序的基本结构,包括包声明、导入语句、类声明和 main 方法。随后,深入探讨了基础语法,如数据类型、变量、控制结构、方法和数组。此外,还介绍了面向对象编程的关键概念,例如类与对象、继承和多态。最后,针对常见的编程错误提供了调试技巧,并总结了学习 Java 的重要性和方法。适合初学者逐步掌握 Java 编程。
52 1
|
4月前
|
XML Java 编译器
Java学习十六—掌握注解:让编程更简单
Java 注解(Annotation)是一种特殊的语法结构,可以在代码中嵌入元数据。它们不直接影响代码的运行,但可以通过工具和框架提供额外的信息,帮助在编译、部署或运行时进行处理。
124 43
Java学习十六—掌握注解:让编程更简单
|
3月前
|
存储 缓存 Oracle
Java I/O流面试之道
NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
Java I/O流面试之道
|
4月前
|
存储 SQL 小程序
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
这篇文章详细介绍了Java虚拟机(JVM)的运行时数据区域和JVM指令集,包括程序计数器、虚拟机栈、本地方法栈、直接内存、方法区和堆,以及栈帧的组成部分和执行流程。
66 2
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
|
3月前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
3月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
4月前
|
存储 算法 Java
带你学习java的数组军队列
带你学习java的数组军队列
48 0

热门文章

最新文章