`
liujiawinds
  • 浏览: 136276 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Java io 解析

    博客分类:
  • java
 
阅读更多

 

简介

       ReaderWriter----提供兼容Unicode面向字符I/O的功能。

       InputStreamOutputStream提供以面向字节形式的I/O功能。

使用方式

字符:文件输入:FileReader--àBufferedReader-àString(或者StringBuffer)  

         文件输出:FileWriter--àBufferedWriter--àPrintWriter  

字节:

文件输入:File--> FileInputStream-> BufferedInputStream             文件输出:File--> FileOutputStream--> BufferedOutputStream

 

能用reader(执行速度快),就不用stream。使用时为了效率,都应使用缓冲流(执行速度快)进行包装。

 

一、文件类

       目录列表器  list

       目录的检查及创建

二、输入输出

       通过继承,任何自InputStreamReader衍生而来的类都含有名为read()的基本方法,用于读取单字节或者字节数组。

       任何自OutputStreamWriter衍生而来的类都含有名为write()的基本方法,用于写单个字节或者字节数组。

       很少使用一个单一的类来创建流对象,相反会通过叠合多个对象来提供所期望的功能。

       与输入有关的所有类都应该从InputStream继承,而与输出有关的所有类都应该从OutputStream继承。

三、InputStream类型

       作用是用来表示那些从不同数据源产生输入的类。这些数据源包括:

1、  字节数组

2、  String对象

3、 文件

4、  “管道”,工作方式与实际管道类似:从一端输入,从另一端输出。

5、  一个由其他的流组成的序列

6、  其他数据源,如Internet连接等。

每一种数据源都有相应的InputStream子类。另外,FilterInputStream也属于一种InputStream为“decorator”类提供基类,其中,“decorator”类可以把属性或有用的接口与输入流连接在一起。

四、OutputStream类型

       字节数组、文件和管道

       另外,FilerOutputStream为“修饰器(decortor)”类提供了一个基类,“修饰器”类把属性或者有用的接口与输出流连接了起来。

五、FilterInputStream FilerOutputStream添加属性和有用的接口

       利用层叠的数个对象为单个对象动态地和透明地添加职责的方式,称作“修饰器”模式。

       修饰器模式规定所有封装于初始对象内部的对象具有相同的接口。

       抽象类“filter”是所有修饰类的基类。(修饰器必须具有和它所修饰的对象相同的接口,但是修饰器也可以扩展接口,这种情况发生在几种“filter”类中)。

通过FilterInputStreamInputStream中读入数据

通过FilterOutputStreamOutputStream写入数据

六、读和写

       ReaderWriter----提供兼容Unicode面向字符I/O的功能。

       InputStreamOutputStream提供以面向字节形式的I/O功能。

       设计ReaderWriter继承层次结构主要是为了国际化。

数据的来源和去处

       (特别地,java.util.zip类库就是使用面向字节的而不是面向字符的。)

七、I/O流的典型使用方式

字符

文件输入:FileReader-->BufferedReader->String(或者StringBuffer)   while((s=in.readLine())!=null)  S1+=s+”\n”;

                     InputStreamReader--àBufferedReader-àString

       文件输出:(String--àStringReader-à BufferedReader)

                     FileWriter-->BufferedWriter-->PrintWriter  

while((s=in.readLine())!=null)  out.println(lineCount++ +”: “ +s);

字节

文件输入:File--> FileInputStream-> BufferedInputStream             文件输出:File--> FileOutputStream--> BufferedOutputStream

for (int i = 0; i < count; i++) {               Buff.write("".getBytes());               }

               Buff.flush();

               Buff.close();

FileInputStream 用于读取诸如图像数据之类的原始字节流。要读取字符流请考虑使用FileReader

FileOutputStream 用于写入诸如图像数据之类的原始字节的流。要写入字符流请考虑使用FileWriter

       能用reader(执行速度快),就不用stream。使用时为了效率,都应使用缓冲流(执行速度快)进行包装。

 

如:BufferedReader in

   = new BufferedReader(new FileReader("foo.in"));

BufferedReader in
   = new BufferedReader(new InputStreamReader(System.in));

PrintWriter out

   = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));

八、存储和恢复数据

       DataOutputStreamDataInputStream (流可以使任何形式)

       如果我们使用DataOutputStream写入数据,Java保证我们可以使用DataInputStream准确地读取数据无论读和写数据的平台怎么不同。

       写字符串并且能够恢复它唯一可靠的做法就是使UTF-8编码

九、读写随机访问文件:RandomAccessFile

       RandomAccessFile除了实现DataInputDataOutput接口之外,几乎完全独立于I/O继承层次结构的其他部分,所以不能将其与InputStreamOutputStream子类的任何部分组合起来。

十、文件读写的实用工具

标准I/O System.in   System.out  System.err

       System.out  System.err 已经事先被包装成了PrintStream对象,可以立即使用。

       System.in 是一个没有被包装的未加工的InputStream,读取之前必须对其进行包装。

       System.out转换成PrintWriterPrintWriter out=new PrintWriter(System.out,true);

压缩   对象序列化

 

分享到:
评论

相关推荐

    java io完全解析

    本知识点的解析将围绕Java IO的基础和高级特性进行展开,为Java初学者提供清晰的学习路径。 首先,Java IO提供了两种数据流,即字节流和字符流。字节流主要用于处理二进制数据,如文件读写和网络数据传输。字符流则...

    javaIO详细讲解+详细案例

    ### Java IO 流详解 #### 一、Java IO 流概念及作用 Java IO(Input/Output)流是Java编程语言中的一个重要组成部分,主要用于处理数据的输入与输出。流(Stream)可以理解为一组有序的、有起点和终点的字节集合,...

    Java IO处理类的汇总

    本篇文章将全面解析Java IO处理类,包括基本概念、常用类库、流的概念及分类,以及实际编程中的应用。 首先,Java IO体系基于流(Stream)的概念,流是数据的序列,可以是从输入源读取或向输出目标写入。Java IO提供...

    Java IO 编程集合

    Java IO编程是Java平台中处理输入输出操作的重要组成部分,它提供了丰富的类库,使得开发者能够高效地进行数据的读取、写入、流的管理和转换。在这个集合中,我们主要探讨的是Java IO在文件读写方面的实践应用。 一...

    java IO流精讲 JAVA IO流实例开发

    Java IO流是Java平台中用于处理输入/输出操作的核心组件,它允许程序与各种数据源(如文件、网络连接、内存缓冲区等)进行交互。Java IO流的精讲涵盖了许多概念和技术,包括流的分类、流的方向、缓冲区的使用、字符...

    Java_IO完全总结

    ### Java IO系统全面解析 #### 一、Java IO系统概述 Java IO系统是Java平台标准库中的一个重要组成部分,主要用于处理输入输出操作。Java IO系统主要包括两个包:`java.io`和`java.nio`(New IO),其中`java.io`...

    Java IO 工具类大全

    本篇文章将全面解析Java IO工具类,帮助你理解并掌握其在实际开发中的应用。 一、Java IO基础 Java IO体系主要由流(Stream)组成,分为字节流和字符流两大类,分别处理字节数据和字符数据。字节流包括InputStream...

    java.io.Reader 和 java.io.InputStream 的区别

    ### Java.io.Reader与Java.io.InputStream的关键差异解析 在深入探讨`java.io.Reader`与`java.io.InputStream`的具体差异之前,我们首先需要理解这两者在Java I/O操作中的基础角色。`java.io.Reader`和`java.io....

    java io读写文件

    以上就是关于Java IO读写文件的基本操作及如何从一个文件中筛选数据并保存到另一个文件中的详细解析。通过这种方式,我们可以有效地处理文本文件中的数据,实现数据的筛选和转换功能。这对于处理大量数据、进行数据...

    java IO 类层次图

    ### Java IO 类层次结构解析 #### 一、概述 Java IO(Input/Output)系统是Java平台中的一个重要组成部分,用于处理程序与外部设备之间的数据交换。Java IO系统提供了丰富的类来支持不同类型的输入输出操作,包括...

    Java IO口解析(初级)

    ### Java IO口解析(初级) #### 一、Java IO系统概览 Java 的核心库 `java.io` 提供了全面的输入输出接口,涵盖了文件读写、标准设备输出等多种应用场景。Java 中的输入输出操作是基于流的方式进行的,所有数据被...

    java io流 xml 泛型 例子学习

    我们可以使用Java IO流读取这个文件,然后用DOM解析XML,将结果存储在一个泛型集合中。如下所示: ```java import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; public class Example { public...

    IO流、Xml解析

    IO流是Java编程语言中的一个关键特性,用于处理程序与外部设备(如硬盘、网络、内存等)之间的数据传输。IO流分为两大类:字符流和字节流,分别处理字符数据和原始二进制数据。字符流适用于文本文件,而字节流则适用...

    java 解析 json文件 java 解析 json文件

    Java解析JSON文件是Java开发中常见的一项任务,特别是在与Web服务交互或处理API响应时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁和易于阅读及编写的特点,被广泛应用于网络数据传输...

    java IO 课件

    Java IO(Input/Output)是Java编程语言中用于处理输入和输出操作的重要组成部分。这个课件集合涵盖了多个示例代码,旨在帮助学习者深入理解Java IO系统的工作原理和使用方法。以下将根据提供的文件名来解析和解释...

    java解析txt

    import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.Reader; /** * @author...

    Java实现解析dcm医学影像文件并提取文件信息的方法示例

    Java实现解析dcm医学影像文件并提取文件信息的方法示例 本文主要介绍了Java实现解析dcm医学影像文件并提取文件信息的方法,结合实例形式分析了Java基于第三方库文件针对dcm医学影像文件的解析操作相关实现技巧。...

    Java IO操作和将字符串解析为数值数组

    在Java编程语言中,IO(Input/Output)操作是处理数据输入和输出的关键部分,而将字符串解析为数值数组则是日常编程中常见的任务。本文将深入探讨这两个主题,并结合提供的两个文件名`TestWriteD.java`和`TestSplitD...

Global site tag (gtag.js) - Google Analytics