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
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
16天前
|
Java
java 中 IO 流
Java中的IO流是用于处理输入输出操作的机制,主要包括字节流和字符流两大类。字节流以8位字节为单位处理数据,如FileInputStream和FileOutputStream;字符流以16位Unicode字符为单位,如FileReader和FileWriter。这些流提供了读写文件、网络传输等基本功能。
38 9
|
2月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
86 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
3月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
2月前
|
Java 数据处理 开发者
揭秘Java IO流:字节流与字符流的神秘面纱!
揭秘Java IO流:字节流与字符流的神秘面纱!
39 1
|
2月前
|
自然语言处理 Java 数据处理
Java IO流全解析:字节流和字符流的区别与联系!
Java IO流全解析:字节流和字符流的区别与联系!
95 1
|
2月前
|
Java
Java 中 IO 流的分类详解
【10月更文挑战第10天】不同类型的 IO 流具有不同的特点和适用场景,我们可以根据具体的需求选择合适的流来进行数据的输入和输出操作。在实际应用中,还可以通过组合使用多种流来实现更复杂的功能。
61 0
|
3月前
|
Java 大数据 API
Java 流(Stream)、文件(File)和IO的区别
Java中的流(Stream)、文件(File)和输入/输出(I/O)是处理数据的关键概念。`File`类用于基本文件操作,如创建、删除和检查文件;流则提供了数据读写的抽象机制,适用于文件、内存和网络等多种数据源;I/O涵盖更广泛的输入输出操作,包括文件I/O、网络通信等,并支持异常处理和缓冲等功能。实际开发中,这三者常结合使用,以实现高效的数据处理。例如,`File`用于管理文件路径,`Stream`用于读写数据,I/O则处理复杂的输入输出需求。
225 12
|
2月前
|
存储 Java 程序员
【Java】文件IO
【Java】文件IO
39 0
|
3月前
|
数据采集 Java 数据挖掘
Java IO异常处理:在Web爬虫开发中的实践
Java IO异常处理:在Web爬虫开发中的实践