我在网上找到一篇关于java 小结的文章,感觉不错,就直接贴了下来,以下是全文:
http://topic.csdn.net/u/20100607/21/e3a9b768-2059-4213-85ab-b1aa32d072a8.html 写道
回调(又称为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. 用两次序列化把两个对象写到文件中去(以追加的方式),
和用一次序列化把两个对象写进文件的大小是不一样的。
因为每次追加时都会要在文件中加入一个开始标记和结束标记。所以对于对象的序列化不能以追加的方式写到文件中。
单独一个随机访问文件类: 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. 用两次序列化把两个对象写到文件中去(以追加的方式),
和用一次序列化把两个对象写进文件的大小是不一样的。
因为每次追加时都会要在文件中加入一个开始标记和结束标记。所以对于对象的序列化不能以追加的方式写到文件中。
发表评论
-
java中的instaceof的意思
2011-08-12 18:02 856最近学习设计模式,看到了instaceof这个词,不认识,于是 ... -
业务逻辑这个是什么东东
2011-08-09 07:30 1418我在网上看到好多人说,业务逻辑,业务逻辑是什么东东,好像挺重要 ... -
判断一个字符串是否由数字组成
2011-08-08 20:27 1066判断一个字符串是否由数字组成,我从网上找到了一个例子,自己试了 ... -
面试进行时--8月8号
2011-08-08 19:07 81这段时间一直在面试,面了这么久还没找到一个工作,真是悲催,我感 ... -
一道面试题:打印出类中的所有方法名
2011-08-08 19:04 681今天面试的公司出了一道笔试题,本人不会做,现在贴出来共享,求高 ... -
【容器】Collection接口---hashCode
2011-07-04 11:04 919java基础中的容器: Collection接口 ... -
【面试】笔试题复习
2011-07-04 10:42 0辞了测试的旧工作,想找一份开发的新工作,所以先准备下面试题: -
【java学习】IO FileWriter
2011-06-28 11:02 0整理中! -
【IO】对基本数据类型的输入输出
2011-06-28 11:02 828在java IO中对基本数据类型的输入输出事一个很重要的点 ... -
【java学习】IO FileOutputStream
2011-06-28 10:59 708刚刚学习了字节流中的FileOutStream: pa ... -
【java学习】IO FileInputstream
2011-06-27 13:10 790找到并按照字节流读取文件(FileInputStream): ... -
【java学习】学生成绩管理系统(一)
2011-06-22 12:57 10整理中。。。 -
【java学习】GUI组件--CheckBox
2011-06-20 12:57 1514学了几天的CheckBox,终于学会了一些,哈哈,进度是慢了一 ... -
【java学习】论GUI中JPanel的布局设置问题
2011-06-20 12:54 4122有几次碰到JPanel的布局问题,在网上找了一些资料 ... -
【java学习】GUI编程画图
2011-06-15 16:43 989使用GUI编程画图,给个小例子: import java.a ... -
【Java学习】Java事件模型
2011-06-13 23:45 677刚刚看了马士兵的关于Java事件模型的视频,大概了解了下事件监 ... -
【java学习】小结GUI编程
2011-06-12 16:46 773断断续续的学习了一些关于GUI编程方面的东西,现在来将我所学习 ...
相关推荐
JAVA IO流小结JAVA IO流小结JAVA IO流小结
java IO教程,java IO教程,java IO教程,java IO教程java IO教程java IO教程java IO教程java IO教程,java IO教程java IO教程java IO教程java IO教程java IO教程,java IO教程,java IO教程,java IO教程,java IO...
Java教程之javaIO详解Java教程之javaIO详解Java教程之javaIO详解
IO流 javaio java 流
java io 结构图java io 结构图
1、Java IO_NIO 2、Java+IO.pdf
IO 简介,只看这篇,IO全部搞定,对于初学者来说,不可多得
java IO文档java IO文档java IO文档java IO文档java IO文档java IO文档
JAVA课件Java IO.ppt详细了解JAVA
javaIO流javaIO流
java io.pdf java io.pdf
第8章JavaIO第8章JavaIO第8章JavaIO
java io处理 方法java io处理 方法
java io 文件读写
java IO操作详细解释 清华大学java io专用教材
Java io流的总结
java IO(下)
java IO流精讲 JAVA IO流实例开发
Java IO流详解
java零基础自学 之 JavaIO流处理java零基础自学 之 JavaIO流处理