Java IO(一)

简介: Java IO(一)

O流概述

将通过不同输入/输出设备(键盘,内存,显示器,网络等)之间的数据传输抽象表述为“流”

程序允许通过流的方式与输入/输出设备进行数据传输

Java中的“流”都位于java.io包中,称为IO(输入/输出)

按操作数据的不同,分为字节流和字符流。


按数据传输方向的不同,分为输入流和输出流


程序从输入流中读取数据(只能读不能写)


程序向输出流中写入数据(只能写不能读)


字节流:java.io.InputStream        java.io.OutputStream


字符流: java.io.Reader         java.io.Writer


9c509b0bbe3741e0972c1b9185bffc98.png

字节流的概念

文本、图片、音频、视频等所有文件都以二进制(字节)形式存储

IO流针对字节的输入输出提供了一系列的流,统称为字节流

InputStream         所有的字节输入流继承自InputStream

OutputStream     所有的字节输出流都继承自OutputStream

InputStream提供读数据相关的方法

OutputStream提供数据相关的方法

InputStream的子类

OutputStream的子类

字节流读写文件

FileInputStream专门用于读取文件中的数据

FileOutputStream专门用于向文件数据

文件不存在会自动创建。

向已经存在的文件中写入数据,该文件中的数据首先会被清空,再写入新的数据。

在存在的文件内容之后追加新内容创建文件输出流对象使用如下构造函数

FileOutputStream(String fileName, boolean append

append 参数的值设置为true

字节流读写文件示例:文件的拷贝

字节流的缓冲区

逐个字节读写,频繁操作文件,效率非常

提高效率也可以定义一个字节数组作为缓冲区,拷贝文件时,一次性读取多个字节数据,并保存在字节数组中,然后将字节数组中的数据一次性写入文件

字节缓冲流

BufferedInputStream

BufferedOutputStream

这两个流都使用了装饰设计模式

构造方法分别接收InputStreamOutputStream类型的参数作为被包装对象

应用程序、缓冲流和底层字节流之间的关系

流内部都定义了一个大小为8192的字节数组作为缓冲区

字符流

Reader字符输入流,从某个源设备读取n

Reader常用方法

Writer字符输出流,向某个目标设备写字符

Writer常用方法

字符流子类

FileReader从文本文件中读取数据

FileWriter向文文本件写入数据

BufferedReader用于对字符输入流进行包装

BufferedWriter用于对字符输出流进行包装

LineNumberReader可以跟踪行号的输入流

转换流

OutputStreamWriter将一个字节流输出流包装字符输出流,方便直接写入字符

InputStreamReader将一个字节输入流包装成字符输入流,方便直接读取字符

将字节流转为字符流

可以通过BufferedReaderBufferedWriter对转换流进行包装


其它IO流

DataInputStream和DatOutputStream

两个与平台无关的数据操作流

提供读写各种基本类型数据的方法

提供readUTF()writeUTF()方法


PrintStream

被称作打印流

提供了用于打印数据的print()println()方法

将基本数据类型的数据或引用数据类型的对象格式化成字符串后再输出

标准输入输出流

System类中三个常量:inouterr

in为InputStream类型,它是标准输入流,默认情况下用于读取键盘输入的数据。


out为PrintStream类型,它是标准输出流,默认将数据输出到命令行窗口。


err 也是 PrintStream 类型,它是标准错误流,它和 out 一样也是将数据输出到控制台 ,它输出的是 应用程序运行时的错误信息

PipedInputStream 和 pipedOutputStream

ByteArrayInputStream 和 ByteArrayOutputStream

CharArrayReader 和 CharArrayWriter

SequenceInputStream

目录
相关文章
|
4月前
|
监控 Java API
现代 Java IO 高性能实践从原理到落地的高效实现路径与实战指南
本文深入解析现代Java高性能IO实践,涵盖异步非阻塞IO、操作系统优化、大文件处理、响应式网络编程与数据库访问,结合Netty、Reactor等技术落地高并发应用,助力构建高效可扩展的IO系统。
144 0
|
1月前
|
Java Unix Go
【Java】(8)Stream流、文件File相关操作,IO的含义与运用
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。!但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
162 1
|
3月前
|
Java 测试技术 API
Java IO流(二):文件操作与NIO入门
本文详解Java NIO与传统IO的区别与优势,涵盖Path、Files类、Channel、Buffer、Selector等核心概念,深入讲解文件操作、目录遍历、NIO实战及性能优化技巧,适合处理大文件与高并发场景,助力高效IO编程与面试准备。
|
3月前
|
SQL Java 数据库连接
Java IO流(一):字节流与字符流基础
本文全面解析Java IO流,涵盖字节流、字符流及其使用场景,帮助开发者理解IO流分类与用途,掌握文件读写、编码转换、异常处理等核心技术,通过实战案例提升IO编程能力。
|
4月前
|
存储 Java Linux
操作系统层面视角下 Java IO 的演进路径及核心技术变革解析
本文从操作系统层面深入解析Java IO的演进历程,涵盖BIO、NIO、多路复用器及Netty等核心技术。分析各阶段IO模型的原理、优缺点及系统调用机制,探讨Java如何通过底层优化提升并发性能与数据处理效率,全面呈现IO技术的变革路径与发展趋势。
110 2
|
8月前
|
存储 网络协议 安全
Java网络编程,多线程,IO流综合小项目一一ChatBoxes
**项目介绍**:本项目实现了一个基于TCP协议的C/S架构控制台聊天室,支持局域网内多客户端同时聊天。用户需注册并登录,用户名唯一,密码格式为字母开头加纯数字。登录后可实时聊天,服务端负责验证用户信息并转发消息。 **项目亮点**: - **C/S架构**:客户端与服务端通过TCP连接通信。 - **多线程**:采用多线程处理多个客户端的并发请求,确保实时交互。 - **IO流**:使用BufferedReader和BufferedWriter进行数据传输,确保高效稳定的通信。 - **线程安全**:通过同步代码块和锁机制保证共享数据的安全性。
347 23
|
Java
Java 中 IO 流的分类详解
【10月更文挑战第10天】不同类型的 IO 流具有不同的特点和适用场景,我们可以根据具体的需求选择合适的流来进行数据的输入和输出操作。在实际应用中,还可以通过组合使用多种流来实现更复杂的功能。
397 57
|
9月前
|
缓存 网络协议 Java
JAVA网络IO之NIO/BIO
本文介绍了Java网络编程的基础与历史演进,重点阐述了IO和Socket的概念。Java的IO分为设备和接口两部分,通过流、字节、字符等方式实现与外部的交互。
292 0
|
12月前
|
Java
java 中 IO 流
Java中的IO流是用于处理输入输出操作的机制,主要包括字节流和字符流两大类。字节流以8位字节为单位处理数据,如FileInputStream和FileOutputStream;字符流以16位Unicode字符为单位,如FileReader和FileWriter。这些流提供了读写文件、网络传输等基本功能。
224 10
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
374 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
下一篇
oss云网关配置