`
pwz1985
  • 浏览: 53176 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

JavaAPI 之java.io

    博客分类:
  • java
阅读更多

Java.io 基本上包含三种类

1 建立数据流的类 ( 处理字节流,字符流 )

2 用于序列化的类和接口 ( 字节流与字符流之间进行转换 )

3 处理文件系统的类和接口 ( 对文件进行操作 )

InputStream/OutputStream 是所有字节输入输出流的超类

以字节为导向的 stream ,表示以字节为单位从 stream 中读取或往 stream 中写入信息
Reader/Writer
是所有字符输入输出流的超类

Unicode 字符为导向的stream ,表示以Unicode 字符为单位从stream 中读取或往stream 中写入信息。

输入/输出流是按数据源而提供类的,如字节数组,String对象,文件,管道,序列,其他数据源等 Java IO 的一般使用原则:

 

一、按数据来源(去向)分类:
1
、是文件: FileInputStream, FileOutputStream, FileReader, FileWriter
2
、是byte[]ByteArrayInputStream, ByteArrayOutputStream
3
、是Char[]: CharArrayReader, CharArrayWriter
4
、是String: StringBufferInputStream, StringReader, StringWriter
5
、网络数据流:InputStream, OutputStream, Reader, Writer

二、按是否格式化输出分:
1
、要格式化输出:PrintStream, PrintWriter

三、按是否要缓冲分:
1
、要缓冲:BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter

四、按数据格式分:
1
、二进制格式(只要不能确定是纯文本的): InputStream, OutputStream 及其所有带Stream 结束的子类
2
、纯文本格式(含纯英文与汉字或其他编码方式);Reader, Writer 及其所有带Reader, Writer 的子类

五、按输入输出分:
1
、输入:Reader, InputStream 类型的子类
2
、输出:Writer, OutputStream 类型的子类

六、特殊需要:
1
、从StreamReader,Writer 的转换类:InputStreamReader, OutputStreamWriter
2
、对象输入输出:ObjectInputStream, ObjectOutputStream
3
、进程间通信:PipeInputStream, PipeOutputStream, PipeReader, PipeWriter
4
、合并输入:SequenceInputStream
5
、更特殊的需要:PushbackInputStream, PushbackReader, LineNumberInputStream, LineNumberReader

决定使用哪个类以及它的构造进程的一般准则如下(不考虑特殊需要):
首先,考虑最原始的数据格式是什么: 原则四
第二,是输入还是输出:原则五
第三,是否需要转换流:原则六第1
第四,数据来源(去向)是什么:原则一
第五,是否要缓冲:原则三 (特别注明:一定要注意的是readLine() 是否有定义,有什么比read, write 更特殊的输入或输出方法)
第六,是否要格式化输出:原则二

 

1.1 以字节为导向的 stream
以字节为导向的 stream ,表示以字节为单位从 stream 中读取或往 stream 中写入信息。以字节为导向的 stream 包括下面几种类型:
1) InputStream

1) ByteArrayInputStream
:把内存中的一个缓冲区作为 InputStream 使用
2) StringBufferInputStream
:把一个 String 对象作为 InputStream
3) FileInputStream
:把一个文件作为 InputStream ,实现对文件的读取操作
4) PipedInputStream
:实现了 pipe 的概念,主要在线程中使用
5) SequenceInputStream
:把多个 InputStream 合并为一个 InputStream
2) OutputStream
1) ByteArrayOutputStream
:把信息存入内存中的一个缓冲区中
2) FileOutputStream
:把信息存入文件中
3) PipedOutputStream
:实现了 pipe 的概念,主要在线程中使用
4) SequenceOutputStream
:把多个 OutStream 合并为一个 OutStream
1.2
Unicode 字符为导向的 stream
Unicode 字符为导向的 stream ,表示以 Unicode 字符为单位从 stream 中读取或往 stream 中写入信息。以 Unicode 字符为导向的 stream 包括下面几种类型:
1) InputStream

1) CharArrayReader :与 ByteArrayInputStream 对应
2) StringReader
:与 StringBufferInputStream 对应
3) FileReader
:与 FileInputStream 对应
4) PipedReader
:与 PipedInputStream 对应
2) OutputStream
1) CharArrayWriter
:与 ByteArrayOutputStream 对应
2) StringWriter
:无与之对应的以字节为导向的 stream
3) FileWriter
:与 FileOutputStream 对应
4) PipedWriter
:与 PipedOutputStream 对应
以字符为导向的 stream 基本上对有与之相对应的以字节为导向的 stream 。两个对应类实现的功能相同,字是在操作时的导向不同。如 CharArrayReader :和 ByteArrayInputStream 的作用都是把内存中的一个缓冲区作为 InputStream 使用,所不同的是前者每次从内存中读取一个字节的信息,而后者每次从内存中读取一个字符。
1.3
两种不现导向的 stream 之间的转换
InputStreamReader
OutputStreamReader :把一个以字节为导向的 stream 转换成一个以字符为导向的 stream
2. stream
添加属性
2.1 "
stream 添加属性 " 的作用
运用上面介绍的 Java 中操作 IO API ,我们就可完成我们想完成的任何操作了。但通过 FilterInputStream FilterOutStream 的子类,我们可以为 stream 添加属性。
如果我们要往一个文件中写入数据,我们可以这样操作:
FileOutStream fs = new FileOutStream("test.txt");
然后就可以通过产生的 fs 对象调用 write() 函数来往 test.txt 文件中写入数据了。但是,如果我们想实现 " 先把要写入文件的数据先缓存到内存中,再把缓存中的数据写入文件中 " 的功能时,上面的 API 就没有一个能满足我们的需求了。但是通过 FilterInputStream FilterOutStream 的子类,为 FileOutStream 添加我们所需要的功能。
2.2 FilterInputStream
的各种类型
2.2.1
用于封装以字节为导向的 InputStream
1) DataInputStream
:从 stream 中读取基本类型( int char 等)数据。
2) BufferedInputStream
:使用缓冲区
3) LineNumberInputStream
:会记录 input stream 内的行数,然后可以调用 getLineNumber() setLineNumber(int)
4) PushbackInputStream
:很少用到,一般用于编译器开发
2.2.2
用于封装以字符为导向的 InputStream
1) 没有与 DataInputStream 对应的类。除非在要使用 readLine() 时改用 BufferedReader ,否则使用 DataInputStream
2) BufferedReader
:与 BufferedInputStream 对应
3) LineNumberReader
:与 LineNumberInputStream 对应
4) PushBackReader
:与 PushbackInputStream 对应
2.3 FilterOutStream
的各种类型
2.2.3
用于封装以字节为导向的 OutputStream
1) DataIOutStream
:往 stream 中输出基本类型( int char 等)数据。
2) BufferedOutStream
:使用缓冲区
3) PrintStream
:产生格式化输出
2.2.4
用于封装以字符为导向的 OutputStream
1) BufferedWriter
:与对应
2) PrintWriter
:与对应
3. RandomAccessFile
1)
可通过 RandomAccessFile 对象完成对文件的读写操作
2)
在产生一个对象时,可指明要打开的文件的性质: r ,只读; w ,只写; rw 可读写

分享到:
评论

相关推荐

    JAVA API官方中文版手册chm文件文档

    JAVA API官方文档中文版软件包 java.applet java.awt java.awt.color java.awt.datatransfer java.awt.dnd java.awt.event java.awt.font java.awt.geom java.awt.im java.awt.im.spi java.awt.image ...

    JavaApi中文参考手册.zip

    这份压缩包“JavaApi中文参考手册.zip”包含了全面的API信息,使得开发者无需在线查找,即可在本地进行查阅,尤其在没有网络或者网络环境不稳定的情况下,显得尤为实用。 手册涵盖了Java的核心类库,包括但不限于...

    Java API文档中文版.zip

    3. 输入/输出(IO)和流:Java的`java.io`包提供了各种IO类,如`File`、`InputStream`、`OutputStream`、`Reader`和`Writer`,用于处理文件和数据流。流的概念贯穿其中,如字节流和字符流,以及缓冲流和转换流,它们...

    这是 IPinfo.io IP 地址 API 的官方 Java 客户端库,允许您查找自己的 IP 地址,或获取 IP 的以下任何

    这是 IPinfo.io IP 地址 API 的官方 Java 客户端库,允许您查找自己的 IP 地址,或获取 IP 的以下任何详细信息: IP地理定位数据(城市、地区、国家、邮政编码、经纬度) ASN 信息(ISP 或网络运营商、关联域名和...

    socket.io,socket.io-client下载

    1. **服务器端设置**:在Node.js项目中,导入`socket.io`模块,初始化服务器并监听特定端口,然后使用`io.on('connection', (socket) => {})`来处理新连接和事件。 2. **客户端连接**:在Java或Android应用中,导入...

    javaAPI 5.0中文.rar,javaAPI 5.0中文.rar

    这个压缩包文件"javaAPI 5.0中文.rar"提供了方便中国开发者使用的中文解释,使得理解和使用Java API变得更加容易。 在Java API 5.0中,有许多关键知识点值得深入探讨: 1. **泛型**:Java 5.0引入了泛型,允许在...

    api-0.1.27-API文档-中文版.zip

    Maven坐标:io.envoyproxy.controlplane:api:0.1.27; 标签:controlplane、api、envoyproxy、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化...

    Java jdk api 1.8_google.CHM JDK API 1.8谷歌翻译中文版在线参考手册

    在JDK API中,`java.util`包是核心的类库之一,包含了大量用于处理集合、日期时间、泛型和并发等任务的类。例如,`ArrayList`和`HashMap`是两种常用的容器,分别用于存储有序和键值对的数据。`Collections`类提供了...

    使用Java API进行tar.gz文件及文件夹压缩解压缩.docx

    import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.nio.file.Path;import java.nio.file.Paths;import java.util.Enumeration;...

    Java API chinese.zip

    1. 类库:Java API包含了大量的类库,如`java.lang`、`java.io`、`java.util`等,每个类库都专注于特定的功能。例如,`java.lang`是所有Java程序的默认导入库,包含基础数据类型、字符串处理、异常处理等关键类;`...

    Java-API_shiyongbuzhou.rar_java api

    例如,如果你需要进行文件操作,你需要导入`java.io.File`类。在代码中,你可以通过以下方式导入: ```java import java.io.File; ``` 导入后,你就可以使用File类提供的方法,如`exists()`检查文件是否存在,`...

    解决环信导入源码后io.swagger的导入报错

    `io.swagger`是一个流行的API文档生成工具,它允许开发者通过注解来描述API,自动生成易于理解和使用的文档。在环信的源码中,可能使用了`io.swagger`来生成对外的服务接口文档。如果在导入源码后出现找不到`io....

    用java写socket.io客户端所需jar包

    - 创建Socket.IO客户端实例:`IO.Options options = new IO.Options();` 可以设置一些选项,如连接超时、重试次数等。 - 连接到服务器:`Socket socket = IO.socket("http://your-server-url:port");` - 注册事件...

    Java.nio 与Java.io比较

    在探讨Java.nio与Java.io之间的比较时,我们首先需要理解这两个包在Java编程语言中的核心作用和它们各自的优势。Java.io和Java.nio是Java中处理输入/输出操作的两个主要框架,它们各自拥有独特的特性和应用场景。 #...

    Java API 中文版 Java_Help_CHS.chm

    1. **基础类库**:这是Java API的基础,包括集合框架(如ArrayList、HashMap等)、IO流、线程管理、异常处理等。这些类库使得开发者能够处理输入输出、数据存储、多线程并发以及错误处理等问题。 2. **网络编程**:...

    JAVA_API1.6文档(中文)

    java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供...

    官方Java API文档中文版.chm(更新到05-12-31)

    Sun 中国技术社区于近日发布Java API文档中文...到此为止java.lang, java.util, java.awt, java.io, java.text等几个包的API文档已经被翻译为中文。欢迎各位开发人员提出宝贵意见。加上了全文检索功能。欢迎大家下载。

    io.swagger.client环信报错.zip

    引用两个文件,解决import io.swagger.client.ApiException; import io.swagger.client.api.MessagesApi; import io.swagger.client.model.Msg;报错

    rxtx-2.1.7.jar串口通信gnu.io包不存在问题

    import gnu.io.CommPortIdentifier; import gnu.io.SerialPort; import gnu.io.SerialPortEvent; import gnu.io.SerialPortEventListener; public class SerialCommunication { private SerialPort serialPort; ...

    Java API中文帮助文档.zip

    Java API中文帮助文档是针对Java开发人员的重要参考资料,它提供了详尽的Java平台标准版(Java SE)1.8版本的API接口、类、方法和变量的中文解释。这个压缩包包含两个文件:`jdk api 1.8_google.CHM`和`jdk api 1.8_...

Global site tag (gtag.js) - Google Analytics