`

JAVA IO流总结

    博客分类:
  • java
阅读更多
回调(又称为callback):可以理解为一个接口提供一些方法给其他类用,但同时其他类在调用它时,它又调用其他类给它的条件(重写)。

单独一个随机访问文件类: RondomAccessFile类允许随机访问文件同时拥有读和写的功能。
  其中方法: close(),read(),writer(),seek(),getFilePointer()这需要注意:这是在有seek()前提下。
流:
一.I/O 流(java 如何实现与外界数据的交流)
 流定义:
  任何有能力产出数据的数据源对象或者有能力接收数据的数据源对象。他屏蔽了实际的I/O设备处理数据的细节。
1.Input/Output:指跨越出了JVM 的边界,与外界数据的源头或者目标数据源进行数据交换。

2.流的分类:
  按流向分为输入流和输出流;
  按传输单位分为字节流(Stream)结尾的和字符流(Reader和Writer);
  按功能还可以分为节点流和过滤流。
  节点流:负责数据源和程序之间建立连接;(相当于裸枪)
  过滤流:用于给节点增加功能。(相当于功能零部件)
  过滤流的构造方式是以其他流位参数构造(这样的设计模式称为装饰模式)。
 注:I/O流是一类很宝贵的资源,使用完后必须调用close()方法关闭流并释放资源。在关闭流时只用关闭最外层的流。  
 3.File 类(java.io.*)可表示一个文件,也有可能是一个目录
  (在JAVA 中文件和目录都属于这个类中,而且区分不是非常的明显 
 4.Java.io 下的方法是对磁盘上的文件进行磁盘操作,但是无法读取文件的内容。
注意:创建一个文件对象和创建一个文件在JAVA 中是两个不同的概念。前者是在虚拟机中创建了一个文件,
  但却并没有将它真正地创建到OS 的文件系统中,随着虚拟机的关闭,这个创建的对象也就消失了。
  而创建一个文件才是在系统中真正地建立一个文件。  

二File类:我们猛看起来像是文件,其实他也可以指代一个文件集,当作为文件集时我们可以对此调用List方法。
  这个类的常用构造有:File("路径"),File(“前边路径”,“后边路径”)File(File,“路径”)
  这个类的常用方法:exists(),delete(),getName(),getPath(),isDirectory(),isFile(),length(),
  listFile(FileFilter),主要用来过滤文件这里有(可以用来嵌套内部类) 
  mkdir(),mkdirs(),toString(),
  FileFilter接口只有accept方法,其返回值为Boolean型,可以在其里边写一些正则表达式来对文件进行筛选。
  这里需要注意的是传入accept的参数必须是final类型(匿名内部类的要求),这样他才能使用该类范围之外的队像。
  顺便讲讲:内部类优点 高聚拢性,缺点在于不易阅读,谨慎使用。
三 字节流:
  InputStream/OutputStream 所有输入输入流的父类,是抽象类。
  子类有:FileInputStream/FileOutputStream(节点流)(注意FileInputStream(path名,boolean)Boolean为true 表示拼接)
  DataInputStream/DataOutputStream 数据输入流允许应用程序以与"机器无关方式"
  从底层输入流中读取基本 Java 数据类型 (8种基本类型,加一种String)读入写出时类型必须一致
  BufferedInputStream/BufferedOutputStream 字节缓冲流 用于给节点流增加一个缓冲的功能。(典型的牺牲空间换时间)
  1.字节输入流:io包中的InputStream为所有字节输入流的父类。
  Int read();读入一个字节(每次一个);
  可先使用new byte[]=数组,调用read(byte[] b)
  read (byte[])返回值可以表示有效数;read (byte[])返回值为-1 表示结束。 
  2.在流中close()方法由程序员控制。因为输入输出流已经超越了JVM的边界,所以有时可能无法回收资源。
  原则:凡是跨出虚拟机边界的资源都要求程序员自己关闭,不要指望垃圾回收。  
四、字节流的字符编码:
  字符编码把字符转换成数字存储到计算机中,按ASCii 将字母映射为整数。
  把数字从计算机转换成相应的字符的过程称为解码。
  乱码的根源在于编解码方式不统一。在世界上任何一种编码方式中都会向上兼容ASCII码。所以英文没有乱码。
  编码方式的分类:
  ASCII(数字、英文):1 个字符占一个字节(所有的编码集都兼容ASCII)
  ISO8859-1(欧洲):1 个字符占一个字节
  GB-2312/GBK:1 个字符占两个字节。GB代表国家标准。
  GBK是在GB-2312上增加的一类新的编码方式,也是现在最常用的汉字编码方式。
  Unicode: 1 个字符占两个字节(网络传输速度慢)
  UTF-8:变长字节,对于英文一个字节,汉字三个字节。
  原则:保证编解码方式的统一,才能不至于出现错误。  
  I/O学习种常范的两个错误 1。忘了加flush2.没有加换行。
五。字符流
  Reader/Writer所有字符流的父类
  其子类有
  InputStreamReader/OutputStreamWriter 称为从字节流到字符流的桥转换类。这个类可以设定字符转换方式 
  FileReader/FileWriter (FileInputStream/FileOutputStream和InputStreamReader/OutputStreamWriter)的组合,只能是本地默认编码
  Bufferedreader/BufferedWriter 字符缓冲流,其特有方法readLine()读取一个文本行,newLine()表示Writer到下一个文本行
六 。
一.对象序列化
  1. 定义:把一个对象通过I/O流写到文件(持久性介质)上的过程叫做对象的序列化。
  2. 序列化接口:Serializable
  此接口没有任何的方法,这样的接口称为标记接口。
  3. 不是所有对象都能序列化的,只有实现了Serializable的类,他的实例对象才是可序列化的。
  4. 在Java种定义了一套序列化规范,对象的编码和解码方式都是已经定义好的。
  5. class ObjectOutputStream 和ObjectInputStream也是过滤流,使节点流直接获得输出对象。
  ganbin@tarena.com.cn
  最有用的方法:
  (1)writeObject(Object b)
  (2)readObject();该方法返回的是读到的一个对象,但是需要我们注意的是,该方法不会以返回null表示读到文件末尾。
  而是当读到文件末尾时会抛出一个IOException;
  6. 序列化一个对象并不一定会序列化该对象的父类对象
  7. 瞬间属性(临时属性)不参与序列化过程。
  8. 所有属性必须都是可序列化的,特别是当有些属性本身也是对象的时候,要尤其注意这一点。序列化的集合就要求集合中的每一个元素都是可序列化的。
  9. 用两次序列化把两个对象写到文件中去(以追加的方式),
  和用一次序列化把两个对象写进文件的大小是不一样的。
  因为每次追加时都会要在文件中加入一个开始标记和结束标记。所以对于对象的序列化不能以追加的方式写到文件中。
1
0
分享到:
评论
1 楼 pouyang 2011-05-26  
非常感谢这么好的总结,感觉还是缺少点例子。
引用
9. 用两次序列化把两个对象写到文件中去(以追加的方式),
  和用一次序列化把两个对象写进文件的大小是不一样的
这个可否举个例子?

相关推荐

    Java io流总结

    Java io流的总结

    Java IO流 总结

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

    Java IO流总结

    Java IO流是Java平台中处理输入输出操作的核心组件,它允许程序与各种数据源(如文件、设备、网络连接)进行交互。IO流系统由多个类和接口组成,它们位于java.io包中,为开发者提供了读写数据的丰富功能。在Java中,...

    java Io流总结(毕向东)

    ### Java IO流总结 #### 一、Java IO流概述及概念 **毕向东**老师是一位经验丰富的Java讲师,以其通俗易懂的教学风格受到广大学员的喜爱。在其分享的《Java Io流总结》文档中,详细介绍了Java IO流的基础概念、...

    JAVA_IO流学习总结

    JAVA_IO流学习总结

    java IO流总结.md

    java I/O流的总结 1.操作数据单位:字节流、字符流 对于文本文件(.txt,.java,.c,.cpp),使用字符流处理 对于非文本文件(.jpg,.mp3,.mp4,.avi,.doc,.ppt,...),使用字节流处理 2.数据的流向:输入流、输出流 ...

    JavaIO流详细总结

    下面是对Java IO流的详细总结: 1. 流的概念: 流是一种抽象的数据传输方式,可以将数据从一个地方传输到另一个地方。Java中的流分为输入流和输出流,分别用于读取和写入数据。流按照处理数据的不同类型,又可以...

    java数据流总结

    java数据流总结,java io流总结,节点流和处理流 java数据流总结,java io流总结,节点流和处理流 java数据流总结,java io流总结,节点流和处理流

    《JAVA_IO流学习总结》

    总结来说,Java IO流是一个庞大的体系,覆盖了从基础的文件操作到复杂的网络通信,理解并熟练掌握这一部分将极大地提升Java开发者的技能。通过学习和实践,开发者可以灵活地处理各种数据输入输出场景,为应用程序...

    JAVAIO流学习总结(转)

    这是别人总结的很有实用价值的javaIO流教程。

    JAVA的IO流总结

    java的IO流总结:包含Inputstream,OutputStream,writer和reader

    JavaIO总结

    有关Java输入输出流的总结有关Java输入输出流的总结有关Java输入输出流的总结

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

    2、常用21个IO流:FileWriter、FileReader、...3、JAVA IO流经典代码示例,示例从易到难。代码功能涉及字节、字符、字符串、文本文件、图片、音频、视频。演示错误用法和经典用法。 4、代码的结构可查看README文件。

    javaIO流知识大总结

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

    java IO流+socket源码 实现简单文本传输

    总结一下,Java IO流提供了丰富的数据传输工具,而Socket是网络通信的核心。通过结合两者,我们可以构建强大的网络应用,例如文件传输、聊天室等。对于初学者来说,理解这些基础概念并实践编写相关代码,将有助于...

    JAVA IO流的增删改查

    自已写了一个JAVA IO流的增删改查操作, 算是对IO的总结吧,初学者可以看下!

    java io图解

    java io流总结,包括字符流,字节流,很详细。inputStream outputStream

    Java-Io流,练习

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

    Java_IO完全总结

    Java IO系统主要包括两个包:`java.io`和`java.nio`(New IO),其中`java.io`提供了一系列基于流的I/O操作接口与实现类,而`java.nio`则提供了更高效的数据访问方式,如通道和缓冲区等。 Java IO系统的设计原则之...

Global site tag (gtag.js) - Google Analytics