Java容器的概要

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:
【Java流输入/输出原理】
在Jaav程序。对于输入数据/输出操作"流"(stream)时尚;J2SDK它提供了多种


各种各样的"流"类,用于获得不同类型的数据;程序通过标准方法输入或输出数据。


【输入/输出流的分类】
java.io包中定义了多个刘类型(累活抽象类)来实现输入/输出功能;能够从不同的角度


对其进行分类:
 按数据流的方向不同能够分为输入流和输出流。
 案处理数据单位不同能够分为字节流和字符流。
 依照功能不同能够分为节点刘和处理流。
J2SDK所提供的全部流类型位于包java.io内都分别继承自下面四种抽象流类型。

|------------------------------------|
|        |     字节流    |   字符流  |
|--------|---------------|-----------|
| 输入流 |  InputStream  |   Reader  |
|--------|---------------|-----------|
| 输出流 | OutputStream  |   Writer  |
|------------------------------------|


【节点流和处理流】
节点流为能够从一个特定的数据源(节点)读写数据(如:文件。内存)。
处理流是"链接"在已存在的流(节点流和处理流)智商,通过对数据的处理为程序提供更


为强大的读写功能。


【InputStream的基本方法】
//读取一个字节并以证书的形式返回(0~255),
//假设返回-1已到输入流的末尾
int read() throws IOException


//读取一系列字节并存储到一个数组buffer,
//反hi十几度去的字节数。假设读取前已到输入流的末尾返回-1
int read(byte[] buffer) throws IOException


//读取length个字节
//并存储到一个字节数组buffer,从length位置開始
//返回十几度去的字节数,假设读取前已到输入流的末尾返回-1
int read(byte[] buffer,int offset,int length) throws IOException


//关闭流释放内存资源
void close() throws IOException


//跳过n个字节不读。返回时机跳过的字节数
long skip(long n) throws IOException


【OutputStream的基本方法】
//向输出流中写入一个字节数据,该字节数据为參数b的低8位
void write(int b) throws IOException


//将一个字节类型的数组中的数据写入输出流
void write(byte[] b) throws IOException


//讲一个字节类型的数组中的从指定位置(off)開始的
//len个字节写入到输出流
void write(byte[] b,int off,int len) throws IOException


//关闭释放内存资源
void close() throws IOException


//将输出流中缓冲的数据所有写出到目的地
void flush() throws IOException
【Reader的基本方法】
//读取一个字符并一整数的形式返回(0~255)
//假设返回-1已到输入流的末尾
int read() throws IOException


//读取length个字符
//并存储到一个数组buffer,从length位置開始
//返回十几度去的字符数,假设读取前已到输入流的末尾返回-1
int read(char[] cbuf,int offset,int length) throws IOException


//关闭流释放内存资源
void close() throws IOException


//跳过n个字符不读,返回时机条股的字节数
long skip(long n) throws IOException
【Writer的基本方法】
//想输出流中写入一个字符数据,该字符数据为參数b的低16位
void write(int c) throws IOException


//将一个字符类型的数组中的数据写入输出流
void write(char[] cbuf) throws IOException


//将一个字符类型的数组总的从指定位置(offset)開始的
//length个字符写入到输出流
void write(char[] cbuf,int offset,int length) throws IOException


//关闭释放内存资源
void close() throws IOException


//将输出流中缓冲的数据所有写出到目的地
void flush() throws IOException
【訪问文件】
FileInputStream 和 FileOutputStream 分别继承自 InputStream 和 OutputStream用


于向文件里输入和输出字节。
FileInputStream和FileOutputStream的经常使用构造方法:
 FileInputStream(String name) throws FileNotFoundException
 FileInputStream(File file) throws FileNotFoundException
 FileOutputStream(String name) throws FileNotFoundException
 FileOutputStream(File file) throws FileNotFoundException
 FileOutputStream(File file,boolean append) throws FileNotFoundException
FileInputStream 和 FileOutputStream 类支持其父类InputStream 和 OutputStream 


所提供的数据读写方法。


注意:
 在实例化FileInputStream和FileOutputStream流时要用try-catch语句已处理其可能抛


出的FileNotFoundException。
 在读写数据时也要用try-catch语句以处理可能抛出的IOException。
 FileNotFoundException是IOException的子类。


【缓冲流】
缓冲流要“套接”在对应的节点刘之上。对读写的数据提供了缓冲的功能,提高了读写


的效率。同一时候添加了一些新的方法。
J2SDK提供了四种缓冲流,其经常使用的构造方法为:
BufferedReader(Reader in)
BufferedReader(Reader in,int sz) //sz为自己定义缓冲区的大小
BufferedWriterWriter(Writer out)
BufferedWriter(Writer out,int sz)
BufferedInputStream(InputStream in)
BufferedInputStream(InputStream in,int size)
BufferedOutputStream(OutputStream out)
BufferedOutputStream(OutputStream out,int size)
缓冲区输入流支持其父类的mark和reset方法。
BufferReader提供了readLine方法用于读取一行字符串(以\r或\n分隔)。
BufferedWriter提供了newLine用于写入一个行分隔符。
对于输出的缓冲流,写出的数据会如今内存中缓存,使用flush方法将会使内存中的数据


立马写出。


【转换流】
InputStreamReader和OutputStreamWriter用于字节数据到字符数据之间的转换。
InputStreamReader须要和InputStream“套接”。


OutputStreamWriter须要和OutputStream“套接”。


转换流在构造时能够指定其编码集合,比如:
InputStream isr = new InputStreamReader(System.in , "ISO8859_1")
【数据流】
DataInputStream 和 DataOutputStream 分别继承自InputStream 和 OutputStream,它


属于处理流。须要分别“套接”在InputStream和OutputStream类型的节点流上。
DataInputStream 和 DataOutputStream提供了能够存取与机器无关的Java原始类型数据


(如:int,double等)的方法。


DataInputStream和DataOutputStream的构造方法为:
  DataInputStream(InputStream in)
  DataOutputStream(OutputStrewam out)
【Print流】
PrintWriter和PrintStream都属于输出流,分别针对于字符和字节。
PritnWriter和PritnStream提供了重载的print
Println方法用于多种数据的输出。
PrintWriter和PrintStream的输出操作不会抛出异常。用户通过检測错误状态获取错误


信息。
PrintWriter和PrintStream有自己主动flush功能。
 PrintWriter(Writer out)
 PrintWriter(Writer out,boolean autoFlush)
 PrintWriter(OutputStream out)
 PrintWriter(OutputStream out,boolean autoFlush)
 PrintStream(OutputStream out)
 PrintStream(OutputStream out,boolean autoFlush)
【Object流】
直Object写或读出
 transientkeyword
 serializable接口
 externalizable接口





本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5040997.html,如需转载请自行联系原作者


相关文章
|
2天前
|
存储 安全 Java
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
|
4天前
|
Kubernetes Java 调度
Java容器技术:Docker与Kubernetes
Java容器技术:Docker与Kubernetes
16 0
|
12天前
|
存储 Java 索引
【亮剑】Java中的并发容器ConcurrentHashMap,它在JDK1.5中引入,用于替换HashTable和SynchronizedMap
【4月更文挑战第30天】本文介绍了Java中的并发容器ConcurrentHashMap,它在JDK1.5中引入,用于替换HashTable和SynchronizedMap。文章展示了创建、添加、获取、删除和遍历元素的基本用法。ConcurrentHashMap的内部实现基于分段锁,每个段是一个独立的Hash表,通过分段锁实现并发控制。每个段内部采用数组+链表/红黑树的数据结构,当冲突过多时转为红黑树优化查询。此外,它有扩容机制,当元素超过阈值时,会逐段扩容并翻倍Segment数量,以保持高性能的并发访问。
|
19天前
|
存储 算法 Java
盘点Java集合(容器)概览,Collection和Map在开发中谁用的最多?
盘点Java集合(容器)概览,Collection和Map在开发中谁用的最多?
30 0
|
25天前
|
存储 安全 Java
Java中的容器,线程安全和线程不安全
Java中的容器,线程安全和线程不安全
17 1
|
26天前
|
存储 Java 开发者
使用Docker容器化Java后台应用
【4月更文挑战第16天】本文介绍了如何使用Docker容器化Java后台应用。Docker作为开源应用容器引擎,提供一致运行环境,简化部署,增强可移植性。文章详细阐述了Docker的优势,包括环境一致性、隔离性、可移植性和资源效率。步骤包括安装Docker、创建Dockerfile、构建镜像、运行容器及管理容器。进阶部分涉及多阶段构建、数据持久化和网络配置,强调了Docker对现代Java开发的重要性。
|
1月前
|
安全 算法 Java
安全无忧:Java并发集合容器的应用与实践
安全无忧:Java并发集合容器的应用与实践
30 0
安全无忧:Java并发集合容器的应用与实践
|
1月前
|
存储 安全 算法
java多线程之并发容器集合
java多线程之并发容器集合
|
1月前
|
Java 持续交付 开发者
使用 Docker 容器化 Java Web 应用:提高开发和部署效率
【4月更文挑战第4天】Docker 作为轻量级容器技术,提升了 Java Web 应用的开发和部署效率。它提供类似生产环境的本地开发体验,减少环境配置时间,保证应用隔离性与稳定性。Docker 改善了部署流程,实现跨环境的无缝迁移,支持自动化构建、部署和扩展,并促进持续集成和持续部署,助力企业实现更高效、可靠的软件生命周期管理。
|
2月前
|
Java 容器
Java常用组件、容器与布局
Java常用组件、容器与布局
22 0