`
pwz1985
  • 浏览: 52056 次
  • 性别: 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 ...

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

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

    Java API文档中文版.zip

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

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

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

    JavaApi中文参考手册.zip

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

    socket.io,socket.io-client下载

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

    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()`检查文件是否存在,`...

    用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中处理输入/输出操作的两个主要框架,它们各自拥有独特的特性和应用场景。 #...

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

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

    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 中文版 Java_Help_CHS.chm

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

    官方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;报错

    Java API中文帮助文档.zip

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

    java api 1.6 中文手册.rar

    Java API 1.6 中文手册是一份详细记录了Java平台标准版(Java SE)1.6版本核心库的文档,对于Java开发者来说是极其重要的参考资料。这份手册以中文呈现,便于中国开发者理解和使用Java 1.6版本的各类功能。 在Java ...

Global site tag (gtag.js) - Google Analytics