`

Java IO一览

    博客分类:
  • J2SE
阅读更多

对于我们常用的GBK中,英文是占用1个字节,中文是2个
对于UTF-8,英文是1个,中文是3个
对于Unicode,英文中文都是2个

Java IO包:

 

Java io包中的流操作分为字节流和字符流两种。

1、   字节流

所有的读操作都继承自一个公共超类 java.io.InputStream 类。

所有的写操作都继承自一个公共超类 java.io.OutputStream 类。

InputStream OutputStream 都是抽象类。

InputStream 6 个低级输入流:

低级流

流的用途

ByteArrayInputStream

从内存数组中读取数据字节

FileInputStream

从本地文件系统中读取数据字节

PipedInputStream

从线程管道中读取数据字节

StringBufferInputStream

从字符串中读取数据字节

SequenceInputStream

从两个或多个低级流中读取数据字节,当到达流的末尾时从一个流转到另一个流

System.in

从用户控制台读取数据字节

 

 

InputStream 还有一个子类:过滤器流 java.io.FilterInputStream 。过滤器流即能把基本流包裹起来,提供更多方便的用法。

FilterInputStream 类的构造方法为 FilterInputStream(InputStream) ,在指定的输入流之上,创建一个输入流过滤器。

FilterInputStream 的常用的子类如下:

过滤器输入流

流的用途

BufferedInputStream

缓冲区对数据的访问,以提高效率

DataInputStream

从输入流中读取基本数据类型,如 int float double 或者甚至一行文本

LineNumberInputStream

在翻译行结束符的基础上,维护一个计数器,该计数器表明正在读取的是哪一行。

PushbackInputStream

允许把数据字节向后推到流的首部

 

 

OutputStream (略)

OutputStream 的结构基本和 InputStream 是一样的。

 

 

2、   字符流

注:是在 jdk1.1 里面引进的,上面字节流是在 jdk1.0 引进的。当用于处理文本数据时,选择字符流比字节流更好。但对只出路基本数据类型的开发者,可以继续使用字节流。

所有的读操作都继承自一个公共超类 java.io.Reader 类。

所有的写操作都继承自一个公共超类 java.io.Writer 类。

       同样 Reader Writer 也是抽象类。

Reader 的常用的子类如下:

低级读取器

流的用途

CharArrayReader

从字符数组中读取数据

InputStreamReader

 

 

 

 

 

 

 

FileReader InputStreamReader 的子类

 

 

 

从本地文件系统中读取字符序列

StringReader

从字符串中读取字符序列

PipedReader

从线程管道中读取字符序列

InputStreamReader 重点讲解:

 

InputStreamReader 是从输入流中读取数据,连接输入流于读取器。如:

 

new InputStreamReader(System.in)

 

 

       构造方法:

 

InputStreamReader(InputStream)

 

用缺省的字符编码方式,创建一个 InputStreamReader

 

InputStreamReader (InputStream, String)

 

用已命名的字符编码方式,创建一个 InputStreamReader

 

       常用的过滤器读取器:

 

过滤器读取器

 

 

 

流的用途

BufferedReader

缓冲数据的访问,以提高效率

  LineNumberReader BufferedReader 的子类)

维护一个计数器,该计数器表明正在读取的是哪一行。

FilterReader (抽象类)

提供一个类创建过滤器时可以扩展这个类

PushbackReader FilterReader 的子类)

允许把文本数据推回到读取器的流中

 

 

这些过滤器读取器都可以传入一个 Reader 作为构造方法的参数。

 

 

 

Writer (略)

 

Writer 的结构基本和 Reader 是一样的。

 

 

字节流是最基本的,字符流是为了处理字符而提出来的。

new BufferedReader(new InputStreamReader(client.getInputStream()));解释:

client.getInputStream()是字节流;

InputStreamReader把字节流转换成字符流;

BufferedReader缓冲字符流,使得能够使用readline()等方法,直接读取一行。

 

 

 

 

分享到:
评论

相关推荐

    Java标准IO流编程一览笔录

    Java标准IO流编程是Java平台基础且至关重要的部分,它提供了对输入输出数据进行操作的能力。I/O(Input/Output)涉及从外部源(如文件、网络连接等)读取数据,以及向这些源写入数据。在Java中,IO流被设计成一个流...

    java 知识一览,所有知识汇总,最好的资料

    这份“java知识一览,所有知识汇总”将涵盖Java的核心概念、语法、类库以及最佳实践,旨在提供一个全面的学习资源。 一、Java基础 1.1 Java安装与环境配置:学习Java的第一步是下载JDK(Java Development Kit),...

    开发问题一览表,JDK API

    这个“开发问题一览表,JDK API”很可能是对Java开发过程中常见问题的集合,以及JDK API相关知识的详细解释。下面将详细探讨JDK API的主要组件、常见问题及其解决方案。 1. **核心类库**:JDK API的核心类库包括了`...

    会当凌绝顶:Java开发修行实录ppt课件幻灯片

    【标题】"会当凌绝顶:Java开发修行实录ppt课件幻灯片"揭示了这是一份关于Java编程的深度学习资料,通过PPT的形式呈现,旨在帮助开发者提升Java...通过系统的研读和实践,相信你能够站在Java开发的巅峰,一览众山小。

    Java高并发异步Socket编程

    DougLee可扩展的网络服务事件驱动Reactor模式基础版多线程版其他变体java.io包中分阻塞IOAPI一览Web服务器,分布式对象系统等等它们的共同特点Read请求解码请求报文业务处理编码响应报文发送响应实际应用中每一个...

    IO流——文件操作字节流常用方法一览

    在Java编程语言中,IO流(Input/Output Stream)是用来处理数据输入和输出的重要机制,尤其是在文件操作中。本文将详细解析文件操作字节流的常用方法,包括输入字节流`FileInputStream`和输出字节流`...

    jdk1.8API各种版本.7z

    例如,对于`java.io.IOException`,百度翻译可能会将其翻译为“输入/输出异常”,便于开发者快速识别和处理与I/O操作相关的错误。 3. **谷歌翻译版本**: 虽然谷歌翻译可能不如有道和百度在中文本地化上做得那么精细...

    java串口通信

    import java.io.*; public class SerialPortReader { public static void main(String[] args) { try { CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier("COM1"); SerialPort serialPort = ...

    UML相关工具一览(2009年10月)

    ### UML相关工具一览(2009年10月) #### Acceleo - **最新版本**: 2.5.0 - **厂商&地址**: 法国, [http://www.acceleo.org/pages/accueil/fr](http://www.acceleo.org/pages/accueil/fr) - **版权**: GPL - **UML...

    UML相关工具一览(截止2015年10月).pdf

    ### UML相关工具一览 #### 一、概述 UML(Unified Modeling Language,统一建模语言)是一种标准化的可视化建模语言,广泛应用于软件工程领域,用于描述软件系统的结构、行为以及它们之间的关系。UML工具是辅助...

    Servlet实现文件上传,可多文件上传示例

    import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet....

    jsp探针 ver0.1

    java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader( process.getInputStream())); String freeSpace = "", line; while ((line = in.readLine()) != null) { if (line.length...

    在Struts 2中实现文件上传

    import java.io.*; import java.util.Date; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class FileUploadAction extends ActionSupport { ...

    JSTL详细标签库介绍

    java异常处理的基础:<BR><BR>java的异常处理适用于在一个方法中能够检测出错误单不能处理错误的情况,这样方法将抛出一个异常(JAVA无法保证“存在”的异常处理程序能够处理某种异常,若“存在”,就“捕获”异常,...

    移动指定文件夹内的全部文件

    import java.io.File; public class FileMove { / * 移动指定文件夹内的全部文件 * * @param fromDir 要移动的文件目录 * @param toDir 目标文件目录 * @throws Exception */ public static void fileMove...

    Linux多线程服务端编程:使用muduo C++网络库

    4.6多线程与IO . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . 98 4.7用RAII 包装文件描述符.. . . . . . . . . . . . . . . . . . . . . . . . . . 99 4.8RAII 与fork() . . . . . . . . . ....

Global site tag (gtag.js) - Google Analytics