- 浏览: 48596 次
- 性别:
- 来自: 北京
文章分类
最新评论
1.File类
File既可以代表一个文件,又可以是一组文件。FilePath更适合File类。
2.输入输出
流
代表又能产出数据的数据源对象或者有能力接受数据接收端对象。
java中流类库让人迷惑主要原因是:创建单一的结果流,却需要创建多个对象。
java.io.InputStream
_______________________|______________________________
| |
ByteArrayInputStream(内存缓冲区) FilterInputStream(装饰器)
StringBufferInputStream(String )_____________________|____________________________
FileInputStream(文件) | | | |
PipedInputStream(管道) DataInputStream BufferedInputStream LineNumInpuStream XXX
基本类型读取 缓冲区读取 增加行号读取
左边4个是基础流,所有流都必须从四个中选一个,根据想添加的功能,从右边选择一个装饰。如:
DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream(path)));
java.io.OutpuStream
______________________________|__________________________
| |
ByteArrayOutputStream(送往内存缓冲区) FilterOutputStream(装饰器)
FileOutputStream(写往文件) __________________|_______________
PipedOutputStream(用于多线程) | | |
DataOutputStream PrintStream BufferedOutputStream
基本类型读取 格式化输出 缓冲区写操作
Reader 和 Writer主要是为了处理用于国际化的16位Unicode字符,老的I/O继承结构仅支持8位的字节流。
两个继承结构的对应关系中,
InputStream Reader 适配器InputStreamReader
ByteArrayInputStream CharArrayReader
StringBufferInputStream StringReader
3.标准I/O
System.in是一个没有被包装过的InputStream
System.out System.err都是包装过的printStream
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));//将System.in包装成Reader
PrintWriter out = new PrintWriter(System.out,true); //将System.out包装成Writer
标准I/O重定向
当屏幕上有大量输出时,滚动太快无法阅读,所以重定向。
setIn(in)
setOut(out)
setErr(out)
4.新I/O
5.压缩
类似于装饰类,用法直观
BufferedOutputStream out = new BufferedOutputStream(
new GZIPOutputStream(new FileOutputStream("test.gz")));
其他操作留给通常的I/O读写
如果保存多个文件,用zip
ZipOutputStream zos = new ZipOutputStream(
new CheckedOutputStream(new FileOutputStream("test.zip"),new Adler32()));
| |
校验类 Adler32快CRC32慢,准
jar打包
jar {ctxu}[vfm0M] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...
{ctxu} 是 jar 命令的子命令,每次 jar 命令只能包含 ctxu 中的一个,它们分别表示:
-c 创建新的 JAR 文件包
-t 列出 JAR 文件包的内容列表
-x 展开 JAR 文件包的指定文件或者所有文件
-u 更新已存在的 JAR 文件包 (添加文件到 JAR 文件包中)
[vfm0M] 中的选项可以任选,也可以不选,它们是 jar 命令的选项参数
-v 生成详细报告并打印到标准输出
-f 指定 JAR 文件名,通常这个参数是必须的
-m 指定需要包含的 MANIFEST 清单文件
-0 只存储,不压缩,这样产生的 JAR 文件包会比不用该参数产生的体积大,但速度更快
-M 不产生所有项的清单(MANIFEST〕文件,此参数会忽略 -m 参数
[jar-文件] 即需要生成、查看、更新或者解开的 JAR 文件包,它是 -f 参数的附属参数
[manifest-文件] 即 MANIFEST 清单文件,它是 -m 参数的附属参数
[-C 目录] 表示转到指定目录下去执行这个 jar 命令的操作。它相当于先使用 cd 命令转该目录下再执行不带 -C 参数的 jar 命令,它只能在创建和更新 JAR 文 件包的时候可用。
6.对象序列化
a.基本概念
what?将实现了Serializable接口的对象转换成一个字节序列,并能恢复。
usage?一是java的远程方法调用(Remote Method Invocation,RMI) 消除系统间不同。
二是保存javabean的配置信息
可以用它实现轻量级持久性。
持久性:对象的生存周期不依赖程序是否执行。
轻量级:不能靠某些持久的关键字定义对象,让系统做更多工作,简而言之,不够自动化。
例子code:
Worm w = new Worm(6,"a");
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("worm.out"));
out.writeObeject("Worm storage\n");//先序列化了字符串
out.writeObeject(w); //写对象w
ObejectInputStream in = new ObjectInputStream(new FileInputStream("worm.out"));
String s = (String) in.readObeject();
Worm w2 = (Worm) in.readObeject();
以上是序列化的流程,序列化是基于字节的,所以要使用InputStream和OutputStream继承层次结构
b.序列化控制之一--Externalizable接口
Externalizable继承Serializable,实现的Externalizable都有ReadExternal和WriteExternal方法
分别在读写时自动调用,特别的,在恢复对象时,是通过调用pulic的默认构造器实现,所以必须在
ReadExternal中写上域初始化语句,否则,达不到预期对象。这也是序列化过程控制的问题。
c.序列化控制之二--transient关键字
public transient String password;这部分不用序列化。
d.序列化控制之三--Externalizable的替代方法
在实现Serializable的类中添加ReadObject和WriteObject方法,并在其中加入一些自定义操作,在序列化
时将会被自动调用,达到序列化控制的目的。
发表评论
-
对代理模式与Java动态代理类的理解(二转)
2010-09-13 15:18 28451. 代理模式 代理模式的作用是:为其他对象提供一种代理以控制 ... -
20.注解
2010-05-04 22:02 9151.注解 三种内置标准 @Override 确保覆盖超类方 ... -
19.枚举类型
2010-05-04 22:00 7811.静态导入enum public enum Spicine ... -
17.容器的深入研究
2010-05-04 21:52 7881.填充容器 List<String> list ... -
16.数组
2010-05-04 21:51 6101.数组和其他容器的区别效率,类型和保存基本类型的能力。效率是 ... -
15.泛型
2010-05-04 21:50 6911.类型参数 public class Ho ... -
14.类型信息
2010-05-04 21:48 6411.rtti Runtime Type Information ... -
13.字符串
2010-05-04 21:43 6981.String对象不可变string一旦创建则不可改变,任何 ... -
12.通过异常处理错误
2010-05-04 21:38 7521.异常参数所有标准异常类都有两个构造器:一个是默认的,另一个 ... -
10.内部类
2010-05-04 21:08 6761.内部类定义将一个类的定义放在另一个类的定义内部,内部类了解 ... -
16.数组
2010-01-03 23:15 6691.数组和其他容器的区 ... -
5.初始化和清理
2010-01-03 23:14 696这章重点讲了构造器 1. ... -
4.控制执行流程
2010-01-03 23:10 5621.foreach 2.goto 不提倡 3.switch ... -
3.操作符
2010-01-03 23:09 827这章很基础,算术,逻辑,关系操作符,我们都很熟悉。其中需要注意 ... -
2.一切都是对象
2010-01-03 23:07 6391.对象存在什么地方。a.寄存器c和c++允许操作,java不 ... -
9.接口-java笔记
2009-12-21 00:26 6621.抽象类 抽象是普通类 ... -
8.多态--java笔记
2009-12-16 18:01 6461.绑定 定义:将一个方法调用同一个方法主体关联起来称作绑定。 ... -
11.持有对象--java笔记
2009-11-16 00:35 1153又看了java思想的第四版得第11章,记一下关键点留个纪念,呵 ... -
7.复用类
2009-11-04 00:07 622复用包括组合和继承,及中庸之道代理。 1.继承 初 ... -
6.访问权限控制
2009-10-14 01:06 665这一章的有以下这么几点: 1.package:包,名字空间, ...
相关推荐
Java学生成绩管理系统源代码: imporjava.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io....
3.Java IO 4.Java 基础 5.Java 容器 6.Java 并发 7.Java 虚拟机 8.Leetcode 题解 9.Leetcode-Database 题解 10.Linux 11.MySQL 12.Redis 13.Socket 14.SQL 15.代码可读性 16.代码风格规范 17.分布式 18.剑指 offer ...
IO系统-01.ppt IO系统-01.ppt IO系统-01.ppt IO系统-01.ppt IO系统-01.ppt
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed ...
java IO系统与正则表达式
通过实例学习java的io系统,让io系统不再成为java新手的心头大患
Java 的 IO 流主要包括输入、输出两种 IO 流,每种输入、输出流有可分为字节流和字符流两大类: 字节流以字节为单位来处理输入、输出操作 字符流以字符为单位来处理输入、输出操作
本系统采用jcreator 4.5+access 2003数据库开发 SimsLogin.java是登陆窗口类 maniframe.java是主窗口类 studentmanageframe.java是学生信息主窗口类 studentinfo.java是学生查询 添加 删除类 DBconnection.java...
Java中IO系统总结[整理].pdf
Java,彻底明白Java语言中的IO系统 Java,彻底明白Java语言中的IO系统 java基础知识
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io....
JavaIO系统基础知识.pdf
彻底明白 Java 语言中的IO系统 彻底明白 Java 语言中的IO系统
Java IO 系统外文文献翻译.doc
使用Date 类获取系统当前时间 Calendar类的使用 使用 Random 类的对象生成随机数 Collection 类的对象的使用 HashMap 对象以键和值的关系形式存储数据
使用Date 类获取系统当前时间 Calendar类的使用 使用 Random 类的对象生成随机数 Collection 类的对象的使用 HashMap 对象以键和值的关系形式存储数据
彻底明白Java的IO系统,知道I/O内部运行机制。
JavaIO ##JavaIO基础面试题 1. 什么是IO 它是一种数据的流从源头到目的地。比如文件拷贝,输入流和输出流都包括了。输入流是从文件中读取数据到存储到进程(process)中,输出流是从进程中读取数据然后写入到目标文件...