Java中IO流概述

目录
  • 1.InputStream 和 OutputStream 继承结构图:
  • 2.Reader 和 Writer 继承结构图:
  • 3. 内容
  • 4.面试题
    • 1.字节流和字符流的区别?
    • 2.什么是 IO 流?
    • 3.有哪些可用的 Filter 流?
    • 4.Java 中有几种类型的流?
    • 5.如何实现对象克隆?
    • 6.什么是缓冲区?有什么作用?
  • 总结

1.InputStream 和 OutputStream 继承结构图:

2.Reader 和 Writer 继承结构图:

3. 内容

3.1 Java 流概述
文件通常是由一连串的字节或字符构成,组成文件的字节序列称为字节流,组成文件的字符
序列称为字符流。Java 中根据流的方向可以分为输入流和输出流。输入流是将文件或其它输入
设备的数据加载到内存的过程;输出流恰恰相反,是将内存中的数据保存到文件或其他输出设
备,详见下图:

文件是由字符或字节构成,那么将文件加载到内存或再将文件输出到文件,需要有输入和输出
流的支持,那么在 Java 语言中又把输入和输出流分为了两个,字节输入和输出流,字符输入
和输出流。
3.2InputStream(字节输入流)
InputStream 是字节输入流,InputStream 是一个抽象类,所有继承了 InputStream 的类都是
字节输入流,主要方法:

void close()
关闭此输入流并释放与该流关联的所有系统资源。
abstract int read()
从输入流读取下一个数据字节。
int read(byte[] b)
从输入流中读取一定数量的字节并将其存储在缓冲
区数组 b 中。
int read(byte[] b, int off, int len)
将输入流中最多 len 个数据字节读入字节数组。

3.3 OutputStream(字节输出流)
所有继承了 OutputStream 都是字节输出流

void close()
关闭此输出流并释放与此流有关的所有系统资源。
void flush()
刷新此输出流并强制写出所有缓冲的输出字节。
void write(byte[] b)
将 b.length 个字节从指定的字节数组写入此输出
流。
void write(byte[] b, int off, int len)
将指定字节数组中从偏移量 off 开始的 len 个字
节写入此输出流。
abstract void write(int b)
将指定的字节写入此输出流。

3.4 Reader(字符输入流)

abstract void close()
关闭该流。
int read()
读取单个字符。
int read(char[] cbuf)
将字符读入数组。
abstract int read(char[] cbuf, int off, int len)
将字符读入数组的某一部分。

3.5 Writer(字符输出流)

Writer append(char c)
将指定字符追加到此 writer。
abstract void close()
关闭此流,但要先刷新它。
abstract void flush()
刷新此流。
void write(char[] cbuf)
写入字符数组。
abstract void write(char[] cbuf, int off, int len)
写入字符数组的某一部分。
void write(int c)
写入单个字符。
void write(String str)
写入字符串。
void write(String str, int off, int len)
写入字符串的某一部分。

4.面试题

1.字节流和字符流的区别?

字符流和字节流的使用非常相似,但是实际上字节流的操作不会经过缓冲区(内存)而是直接操作文本本身的,而字符流的操作会先经过缓冲区(内存)然后通过缓冲区再操作文件以字节为单位输入输出数据,字节流按照 8 位传输以字符为单位输入输出数据,字符流按照 16 位传

2.什么是 IO 流?

它是一种数据的流从源头流到目的地。比如文件拷贝,输入流和输出流都包括了。输入流从文件中读取数据存储到进程(process)中,输出流从进程中读取数据然后写入到目标文件。

3.有哪些可用的 Filter 流?

在 java.io 包中主要由 4 个可用的 filter Stream。两个字节 filter stream,两个字符 filter stream. 分别是 FilterInputStream, FilterOutputStream, FilterReader and FilterWriter.这些类是抽象类,不能被实例化的。

4.Java 中有几种类型的流?

按照流的方向:输入流(inputStream)和输出流(outputStream)按照实现功能分:节点流(可以从或向一个特定的地方(节点)读写数据。如 FileReader)和处理流(是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如 BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。)按照处理数据的单位: 字节流和字符流。字节流继承于 InputStream 和 OutputStream, 字符流继承于 InputStreamReader 和 OutputStreamWriter 。

5.如何实现对象克隆?

有两种方式:1). 实现 Cloneable 接口并重写 Object 类中的 clone()方法;2). 实现 Serializable 接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆

6.什么是缓冲区?有什么作用?

缓冲区就是一段特殊的内存区域,很多情况下当程序需要频繁地操作一个资源(如文件或数据库)则性能会很低,所以为了提升性能就可以将一部分数据暂时读写到缓存区,以后直接从此区域中读写数据即可,这样就可以显著的提升性能。对于 Java 字符流的操作都是在缓冲区操作的,所以如果我们想在字符流操作中主动将缓冲区刷新到文件则可以使用 flush() 方法操作。

总结

到此这篇关于Java中IO流概述的文章就介绍到这了,更多相关Java中IO流内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java IO之包装流详解

    目录 1.前面讲的字符输入输出流,字节输入输出流都是字节流.那么什么是包装流呢? 2.缓冲流 3.转换流:把字节流转换为字符流 4.内存流(数组流): 5.合并流:把多个输入流合并为一个流,也叫顺序流,因为在读取的时候是先读第一个,读完了在读下面一个流. 总结 根据功能分为节点流和包装流(处理流) 节点流:可以从或向一个特定的地方(节点)读写数据.如FileReader. 处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写.如BufferedReader.处理流的构造方

  • 一起来学习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的File类和IO流其实真的不难

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

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

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

  • Java IO之字节输入输出流详解

    目录 1.字节输出流:OutputStream 2.字节输入流:InputStream 3.用字节流完成文件的复制 总结 那么这篇博客我们讲的是字节输入输出流:InputStream.OutputSteam(下图红色长方形框内),红色椭圆框内是其典型实现(FileInputSteam.FileOutStream) 1.字节输出流:OutputStream public abstract class OutputStream extends Object implements Closeable,

  • Java IO之流的分类详解

    目录 一.根据流向分为输入流和输出流: 二.根据传输数据单位分为字节流和字符流 三.根据功能分为节点流和包装流 总结 一.根据流向分为输入流和输出流: 注意输入流和输出流是相对于程序而言的. 输出:把程序(内存)中的内容输出到磁盘.光盘等存储设备中 输入:读取外部数据(磁盘.光盘等存储设备的数据)到程序(内存)中 综合起来: 二.根据传输数据单位分为字节流和字符流 上面的也是 Java IO流中的四大基流.这四大基流都是抽象类,其他流都是继承于这四大基流的. 三.根据功能分为节点流和包装流 节点

  • Java中IO流概述

    目录 1.InputStream 和 OutputStream 继承结构图: 2.Reader 和 Writer 继承结构图: 3. 内容 4.面试题 1.字节流和字符流的区别? 2.什么是 IO 流? 3.有哪些可用的 Filter 流? 4.Java 中有几种类型的流? 5.如何实现对象克隆? 6.什么是缓冲区?有什么作用? 总结 1.InputStream 和 OutputStream 继承结构图: 2.Reader 和 Writer 继承结构图: 3. 内容 3.1 Java 流概述文件

  • Java中IO流文件读取、写入和复制的实例

    //构造文件File类 File f=new File(fileName); //判断是否为目录 f.isDirectory(); //获取目录下的文件名 String[] fileName=f.list(); //获取目录下的文件 File[] files=f.listFiles(); 1.Java怎么读取文件 package com.yyb.file; import java.io.File; import java.io.FileInputStream; import java.io.In

  • Java中IO流 字节流实例详解

    Java中IO流 字节流实例详解 IO流(输入流.输出流),又分为字节流.字符流. 流是磁盘或其它外围设备中存储的数据的源点或终点. 输入流:程序从输入流读取数据源.数据源包括外界(键盘.文件.网络-),即是将数据源读入到程序的通信通道. 输出流:程序向输出流写入数据.将程序中的数据输出到外界(显示器.打印机.文件.网络-)的通信通道. 字节流 1.InputStream.OutputStream InputStream抽象了应用程序读取数据的方式 OutputStream抽象了应用程序写出数据

  • Java中IO流 RandomAccessFile类实例详解

    Java中IO流 RandomAccessFile类实例详解 RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件. 支持随机访问文件,可以访问文件的任意位置. java文件模型,在硬盘上的文件是byte byte byte存储的,是数据的集合 打开文件,有两种模式,"rw"读写."r"只读:RandomAccessFile raf = new RandomAccessFile(file, "rw");,文

  • Java中io流解析及代码实例

    IO流 Java中IO流分为两种,字节流和字符流,顾名思义字节流就是按照字节来读取和写入的,字符刘是按照字符来存取的:常用的文件读取用的就是字符流,在网络通信里面用的就是字节流 下面这张图是Java中IO流的总体框架: 字节流 Java中字节流一般都是以stream结尾的,输入的字节流叫InputStream,输出字节流叫OutputStream;InputStream和OutputStream是表示自己输入/输出的所有类的超类,是抽象类(abstract) 常用的字节流有: 1.FileInp

  • 一文带你了解Java中IO流与Guava的使用

    目录 Guava IO 分类 常用的流 示例 Guava中的IO 其他 结束语 Guava IO 日常系统交互中,文件的上传下载都是常见的,一般我们会通过jdk提供的IO操作库帮助我们实现.IO指的是数据相对当前操作程序的入与出,将数据通过 输出流从程序输出,或者通过输入流将数据(从文件.网络.数据等)写入到程序,这里的IO指的是基于流作为载体进行数据传输.如果把数据比作合理的水,河就是IO流,也是数据的载体. Java为我们提供了非常多的操作IO的接口与类,帮助开发者实现不同源间的数据传输,比

  • Java中IO流简介_动力节点Java学院整理

    Java io简介 Java io系统的设计初衷,就是为了实现"文件.控制台.网络设备"这些io设置的通信.例如,对于一个文件,我们可以打开文件,然后进行读取和写入.在java 1.0中,java提供的类都是以字节(byte)为单位,例如,FileInputStream和FileOutputStream.而到了java 1.1,为了与国际化进行接轨,在java io中添加了许多以字符(Unicode)为单位进行操作的类. 在java io的称呼中,我们经常会提到"输入流&qu

  • Java 中IO流字符流详解及实例

    Java-IO流 字符流 java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码). 文件是byte byte byte ... 的数据序列. 文本文件是文本(char)序列按照某种编码方案(uft-8.utf-16be.gbk)序列化为byte的存储结果. 字符流(Reader.Writer)-->操作的是文本.文本文件 1.字符的处理,一次处理一个字符 2.字符的底层仍然是基本的字节序列 3.字符流的基本实现: InputStreamReader是字节流通向字符

  • Java中IO流解析及代码实例详解

    目录 1.IO流 1.流和流的分类 什么是IO流? IO流的分类? java.io包下需要掌握的流有16个: 2.如何使用流 1.输入流(读文件):FileInputStream 2.输出流(写文件):FileOutputStream 3.文件的拷贝 总结 1.IO流 1.流和流的分类 什么是IO流? I:Input (输入) O: Ouput(输出) IO流的分类? 有多种分类方式: 一种方式是按照流的方向进行分类: 以内存作为参照物 往内存中去,叫做输入(Input).或者叫做读(Read)

  • Java中IO流详解

    问题: 1.IO解决的问题 2.输入字节流和输出字节流 3.输入字符流和输出字符流 4.转换流的作用 5.案例代码 1.IO解决问题 解决设备与设备之间的数据传输问题,比如 硬盘-->内存 内存-–>硬盘 2.字节流 输入字节流 --–|InputStream 所有输入字节流的基类,抽象类 ---–|FileInputStream 读取文件的输入字节流 ---–|BufferedInputStream 缓冲输入字节流,该类内部其实就是维护一个8KB字节数组而已.该类出现的目的是为了提高读取文件

随机推荐