什么是数据流
----------数据流是指所有的数据通信通道
在java中有关流的操作使用java.io.*
出于安全的考虑,小应用不能实现文件I/O流
标准输入输出
----------System类管理标准输入输出流和
错误流
System.out: 把输出送到缺省的显示(通常是显示器)
System.in: 从标准输入获取输入(通常是键盘)
System.err: 把错误信息送到缺省的显示
System.in: 属于BufferedInputStream类型
System.out: 属于PrintStream类型 (String)
System.err: 属于PrintStream类型
每当main方法被执行时,就自动生成上述三个对象
输入流输出流基类
--------------InputStream和OutputStream
抽象类,不能直接使用
InputStream类的方法:
-----------------------read():从流中读入数据
skip():跳过流中若干字节数
available():返回流中可用字节数
mark():在流中标记一个位置
reset():返回标记过得位置
markSupport():是否支持标记和复位操作
close():关闭流
OutputStream类的方法:
------------------------write(int b):将一个整数输出到流中
write(byte b[]):将数组中的数据输出到流中
write(byte b[], int off,int len):将数组b中从off指定的位置开始len长度的数据输出
到流中
flush():将缓冲区中的数据强制送出
close():关闭流.
PrintStream类
-----------println()不属于OutputStream类,它是PrintStream类的子类,能提供复杂的输出
PrintStream类的方法有: write, flush, checkError,print, println,close.
其中println可以输出多种形式的数据.例如:
println(String s), println(char c)等
FILE IO
-----1.文件对象的建立
File fp=new File(“tempfile.txt”);
对文件操作要定义文件流
FileInputStream类用来打开一个输入文件
FileOutputStream类用来打开一个输出文件
2.文件流的建立
FileInputStream in=new FileInputStream(fp);
FileOutputStream out=new FileOutputStream(fp);
3.增加缓冲区流,减少访问
硬盘的次数,提高效率
BufferedInputStream和BufferedOutputStream, 将它们与文件流相接
FileInputStream in=new FileInputStream(“file1.txt”);
BufferedInputStream bin= new BufferedInputStream(in,256);
只有缓冲区满时,才会将数据送到输出流.
Java在输出数据流中,当对方尚未将数据取走时,程序就会被阻塞.
有时要人为地将尚未填满的缓冲区中的数据送出,使用flush()方法
数据输入输出流
------------DataInputStream、DataOutputStream
除了字节和字节数组,还可以处理int,float,boolean等类型.
还可以用readLine方法读取一行信息
可使用的方法:
write,writeBoolean,read,readByte等
数据流的建立
FileInputStream fos= new FileInputStream(”file2.txt"));
DataInputStream dis= new DataInputStream(fos)
数据输出流可以是一个已经建立好的输入数据流对象,例如网络的连结,文件等.
类RandomAccessFile
-----------------RandomAccessFile是处理本地文件的类
zip文件需要用随机方法处理
文件目录给出个文件的入口,可以随机读取.
创建一个随机文件
new RandomAccessFile(file1.txt, r);
new RandomAccessFile(file2.txt, rw);
随机文件可以同时完成读和写操作.
支持随机文件操作的方法:
readXXX()或writeXXX()
skipBytes();将指针乡下移动若干字节
seek():将指针调到所需位置
getFilePointer():返回指针当前位置
length():返回文件长度
利用seek(long pos)方法查找随机文件中的信息
其他操作
------使用文件类
获取文件的路径信息
设f是一个文件对象
File f=new File(“data”,temp.dat”);
f.getName():返回
文件名 temp.dat
f.getParent():返回文件所在目录名 data
f.getPath():返回文件路径 datatemp.dat
f.getAbsolutePath():返回绝对路径
unicode
-----在java中用unicode 表示字符和字符串
DatainputStream的readLine方法, 以字节形式读入, 以unicode形式输出
DataInputStream不适合输入是unicode的形式
处理字符用InputStreamReader 类和BufferedReader类(jdk1.1)
管道流
--------创建管道流
管道流一定是输入输出并用
例:将数据从输出管道进,从输入管道出
PipedInputStream pis=new PipedInputStream();
PipedOutputStream pos=new PipedOutputStream(pis);
对象流
----在java.io包中什么是对象的持续性?
能够纪录自己的状态一边将来再生的能力,叫对象的持续性
什么是串行化?
对象通过写出描述自己状态的的数值来记录自己的过程叫串行化.
什么是对象流?
能够输入输出对象的流.
两者什么关系?
将串行化的对象通过对象输入输出流写入文件或传送到其它地方.
相应的类:ObjectInput
对象的输出: ObjectOutputStream
相应的方法:writeObject()
对象的输入:ObjectInputStream
相应的方法:readObject()