`
臻是二哥
  • 浏览: 189255 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
Group-logo
Java技术分享
浏览量:0
社区版块
存档分类
最新评论

JAVA IO常用总结

    博客分类:
  • JAVA
阅读更多
最近复习java,于是就对java的IO进行一个总结:


在Java中,存在着流这种概念,所谓流,可以理解为数据的流动(实际上为字节的流动)。在java中,存在字节流与字符流,但实际上,字符流在传递过程中也是传递的字节流,字节流与字符流唯一的区别是:字符流使用了缓冲区,而字节流没用使用缓冲区。

流的另外一种分类方法是可以分为节点流(node stream)与过滤流(filter)



在理解节点流时,牢记流是在“程序内存”和“目标地址”之间流动的,其中,流进程序内存的叫输入流,流出程序内存的叫输出流。

而对于过滤流,就是那些封装流的流。下面我们来看看这些流:

OutputStream类是一个抽象类,使用时需要通过其子类赋值。



字节输出流类:

FileOutputStream类是文件操作流,目标地址为“文件”,构造函数为FileOutputStream(File f)或   FileOutputStream(File f,boolean append)    当append为真时,表示向文件中追加内容。

ByteArrayOutputStream类是内存操作流,目标地址为“内存”,构造函数为ByteArrayOutputStream()。

PipedOutputStream类是管道操作流,目标地址为“管道”,构造函数为PipedOutputStream()。

ObjectOutputStream类是对象操作流,用于操作对象,构造函数为ObjectOutputStream(OutputStream os)。

DataOutputStream类是数据流,他是过滤流,与平台无关,构造函数为DataOutputStream(OutputStream os)。

ZipOutputStream类是压缩流,他是过滤流,用于生成.zip文件,构造函数为ZipOutputStream(OutputStream os)。

PrintStream类是打印流,构造函数为PrintStream(OutputStream os)或者PrintStream(File file)。



字节输出流类:

FileInputStream类是文件操作流,目标地址为“文件”,构造函数为FileInputStream(File f)。ByteArrayInputStream类是内存操作流,目标地址为“内存”,构造函数为ByteArrayInputStream(byte[] buf)。

PipedInputStream类是管道操作流,目标地址为“管道”,构造函数为PipedInputStream()。

ObjectInputStream类是对象操作流,用于操作对象,构造函数为ObjectInputStream(InputStream is)。

DataInputStream类是数据流,他是过滤流,与平台无关,构造函数为DataInputStream(OutputStream os)。

ZipInputStream类是压缩流,他是过滤流,用于读取.zip文件,构造函数为ZipInputStream(InputStream is)。

PushbackInputStream类是回退流,用于将读取的内容回退“原地”,构造函数为PushbackInputStream(InputStream is)。

SequenceInputStream类是合并流,用于将两个输入流合并为一个,构造函数为SequenceInputStream(InputStream is1,InputStream is2)。



System.out和System.err是PrintStream类的实例化对象,其默认目标地址是屏幕,但是他们都可以重定向,使用System.setOut(PrintStream ps)或者System.setErr(PrintStream ps)将目标地址改变;


字符输入输出流:

OutputStreamWriter类:将输出的字符流变成字节流,构造函数为OutputStreamWriter(OutputStream os)。

InputStreamWriter类:将输入的字节流变成字符流,构造函数为InputStreamWriter(InputStream is)。

FileWriter类:文件字符输出流,构造函数为FileWriter(File f)或者FileWriter(File f,boolean append)。            当append为true时,表示追加。

FileReader类:文件字符输入流,构造函数为FileReader(File f)。

PrintWriter类:字符打印流。

BufferedReader类:字符输入缓冲流,构造函数为BufferedReader(Reader r)。

PushbackReader类:回退流,构造函数为PushbackReader(Reader r)。

以上各流,只有FileWriter和FileReader为节点流,其余为过滤流。





字符流的实现也是以字节流为基础的,在计算机中,数据都是以字节的形式存储在计算机硬盘上的,字符仅仅存在于内存中,所以在开发中,字节流比较常用。



字节流与字符流的唯一区别就是字节流没有使用缓冲区,而字符流使用了缓冲区。



"\r\n"表示键盘上的回车键。

"\t"表示键盘上的Tab键。



内存操作流一般在生成一些临时信息时才会使用,如果将这些临时信息保存在文件中,代码执行结束还得删除这个文件,比较麻烦,此时使用内存操作流最合适不过了。



管道流用于两个线程之间的通信,要进行管道输出,必须把输出流连接在输入流上。使用管道输出流的public void connect(PipedInputStream pis) throws IOException方法。使用了该方法,两个线程启动后可以自动的进行管道的输入输出操作。


当然,在Java中,提供了专门的输入数据类,此类不仅仅可以完成数据输入,还可以方便的对各种数据进行验证,此类为java.util.Scanner;



自此,除了对象操作流类,其余常用的类已经说明完毕。

要注意:所有的流类都在java.io包中,但是两个除外,他们是压缩流类和Scanner类。java.util.zip.ZipInputStream和java.util.zip.ZipOutputStream和java.util.zip.ZipFile和java.util.zip.ZipEntry和java.util.Scanner。



在java中,如果出现乱码问题,一定是内容输出时的编码与内容接受时的编码不一致导致的。




打印流有PrintStream类和PrintWriter类,他们一次通过OutputStream和Writer进行构造初始化,把输出流的实例传递到打印流,可以更加方便的输出内容。其实,打印流就是把输出流重新包装了一下,更加好用。

使用ObjectOutputStream将序列化对象输出的过程叫做序列化,使用ObjectInputStream将序列化的对象读入的过程叫做反序列化。



一个对象被序列化之后,只是将这个对象的属性保存下来,而对象的方法是不被保存的,因为他与类的方法是一样的。



在java中,对象要想以流的形式输出就必须对对象进行序列化,对象序列化要实现Serializable接口或者Externalizable接口。



Serializable接口中没有定义方法,只需实现这个接口即可。实现了Serializable接口的类对象在进行序列化时会保存全部的属性,如果希望某些属性不被保存,则在类定义时,将该属性用transient关键字标记。



Externalizable接口中定义了两个方法,在这两个方法中定义在序列化时哪些属性被保存。但此类不常用。实现了此接口的类必须存在无参数构造函数。







System.out和System.err是PrintStream的实例化对象,目标地址为屏幕;System.in是InputStream的实例化对象,目标地址是键盘。

在java中,允许使用System.setOut(PrintStream ps),System.setOut(PrintStream ps)System.setOut(InputStream is)对他们的目标地址进行重定向,但只用setOut()比较常用。































0
0
分享到:
评论

相关推荐

    Java IO流 总结

    Java IO流总结 Java IO流是Java语言中最基本和最重要的输入/输出机制,负责将数据从外部世界输入到Java应用程序中或将数据从Java应用程序输出到外部世界。IO流可以分为两大类:字节流和字符流。 1. 节点流:离数据...

    “Java IO”总结

    这篇文章将对"Java IO"进行深入的总结,涵盖其核心概念、类库和实用技巧。 Java IO系统是Java平台中用于处理输入输出的重要部分,它包括一系列的类和接口,使得程序能够读取和写入各种数据流。Java IO API的设计...

    javaIO流知识大总结

    在这个大总结中,我们将深入探讨Java IO流的基本概念、分类、常用类以及实践应用。 1. **基本概念** - **流(Stream)**:在Java中,流是一个抽象的概念,代表数据的有序序列。它可以是字节流或字符流,流向可以是...

    java流IO总结

    ### Java IO流详解 #### 一、概述 Java的I/O操作主要涉及使用Java语言进行输入和输出操作。Java的所有I/O机制都是基于数据流来进行输入输出,这些数据流表示了字符或字节数据的流动序列。理解Java的I/O模型对于...

    java IO(下)

    ### Java IO(下): 过滤流(处理流)、缓冲流详解 #### 一、过滤流(处理流)概述 **过滤流**(处理流)是在Java IO系统中的一个重要概念,它建立在已有的流对象之上,并为其添加了额外的功能或性能优化。与节点流...

    JAVA IO同步,异步

    其中,signal driven IO 在实际中并不常用,因此这里只讨论剩下的四种IO 模型。 总结 在本文中,我们讨论了基于系统底层通信技术Socket 的JAVA IO同步和异步操作,包括阻塞和非阻塞IO 操作。同步IO 是指应用程序在...

    JAVA IO流缓冲字节流缓冲字符流等流经典代码示例加注释总结.rar

    2、常用21个IO流:FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader、PrintWriter、BufferedReader、InputStream、...

    javaIO流笔记

    本篇详细介绍了Java中`File`类的基本用法及其相关的常用操作,包括文件和目录的创建、删除以及路径分隔符的使用。通过具体的示例代码加深了对`File`类的理解。这对于理解Java文件系统操作至关重要。

    全面总结java IO体系

    Java IO体系是Java编程语言中用于处理输入输出操作的核心组件,它允许程序与各种数据源(如文件、网络、内存缓冲区等)进行交互。在Java中,输入输出操作是通过流(Stream)的概念来实现的,流是数据传输的通道,可以...

    Java基础篇:IO流.pdf

    总结来说,Java IO流是处理文件和网络数据传输的核心组件,理解其原理和分类有助于更高效地进行数据处理。通过合理地组织和管理IO流,可以在不同的应用场合下灵活使用,满足各种数据输入输出的需求。

    javaio流学习总结范文.doc

    本篇总结主要围绕Java IO流的基础概念、分类以及常用方法展开。 首先,Java IO流按照数据流动的方向可分为输入流(Input Stream)和输出流(Output Stream)。输入流负责从源(如文件、网络连接)读取数据,而输出...

    Java-Io流,练习

    总结来说,Java的IO流是一个庞大且重要的主题,涵盖了数据的输入、输出、缓冲、转换等多个方面。对于初学者而言,理解和掌握IO流的基本概念、分类以及常用类的用法是至关重要的。通过实践练习,可以加深对IO流的理解...

    Java常用类总结

    在Java编程语言中,常用的类是开发者日常工作中不可或缺的基础组件,它们构成了Java Standard Edition (Java SE) 库的核心。本文将深入探讨一些关键的Java类,这些类在各种应用程序开发中都发挥着重要作用。 首先,...

    JAVA_IO流学习总结

    10. IO流的继承关系和其他常用对象:Java的IO库中定义了大量的流相关类,它们之间具有继承关系,例如FileInputStream和FileOutputStream是字节流的两个具体实现,用于文件的读写操作;BufferedReader和...

    JAVA IO流详解

    #### 四、常用IO流类介绍 1. **InputStream/OutputStream** - `InputStream`: 输入流的基类。 - `ByteArrayInputStream`: 从字节数组中读取数据。 - `FileInputStream`: 从文件系统中的文件读取字节。 - `...

    2022年java io流学习总结.docx

    2022年的Java IO流学习总结主要涵盖以下核心知识点: 1. **流的概念**:流是数据传输的抽象概念,表示数据的流动方向,可以是从文件到内存,也可以是从键盘到屏幕。Java中的IO流分为两种基本类型,字节流(Byte ...

    Java_IO操作总结

    在这个总结中,我们将深入探讨Java I/O的几个关键知识点。 首先,我们要理解I/O的基本概念。I/O,即Input/Output,指的是计算机系统与外部设备之间交换数据的过程。在Java中,I/O操作主要涉及到java.io包中的类和...

    java IO文档.docx

    总结来说,Java IO流提供了丰富的类和接口,可以处理各种数据传输需求,无论是简单的文件读写,还是复杂的网络通信,都可以找到相应的流类来实现。理解并熟练掌握Java IO流的使用,对于Java开发者来说至关重要。

    IO知识总结

    标题中的“IO知识总结”指的是在计算机编程领域中关于输入/输出(Input/Output,简称IO)的概念、机制和常用库的概述。IO是程序与外部世界交互的关键部分,包括读取数据(输入)和写入数据(输出)。在Java等编程语言...

Global site tag (gtag.js) - Google Analytics