java文件与数据流报告
文件与数据流实习报告 一文件的性质: (1用来长期保存大量的数据在程序结束后长期(永久)存在,件一般位于外存储设备 上(硬盘、光盘、磁带)比较:内存中的变量或数组中的数据是临时性数据,程序结束时就 会丢失。 (2) 位流:计算机中的数据是以0与1的方式存储在两个装置间存取数据,以1或。 的方式进行,ava将数据在目的地与来源之间的流动抽象化为一个流,即位流。 (3) 数据流:数据流是一系列的数据,循环处理每个数据单元,直到遇到结束符或 出现异常(Exception)« 二输入输出流: Java中输入输出流主要分为字节流和字符流。 所有字节流都继承java.io.Stream ,和java.ioOutputStream它们两个都是抽象 类。 (1) 输入字节流: a所有字节流都继承java.io.Stream . b类Stream的成员方法read()读入单个无符号字节(unsigned byte)的数据, 并返回一个整数类型(int)的值(与读入的无符号字节数据相对应)正常返回:介于0和255 之间的一个数如果遇到数据流结束,则返回-1 c public int read(byte[ ] data) throws lOException 和 public int read(byte[ ] data, int offset, int length) throws lOException 的用法。 read(byte[ ] data) t从输入流中读取一定数量的字节,并将其存储在缓冲区数 组data中。以整数形式返回实际读取的字节数。在输入数据可用、检测到文件 末尾或者抛出异常前,此方法一直阻塞。如果data的长度为0,则不读取任 何字节并返回0;否则,尝试读取至少一个字节。 如果因为流位于文件末尾而没有可用的字节,则返回值-1;否则,至少读取一 个字节并将其存储在data中。 read(byte[ ] data, int offset, int length)是将长度是从 offset 开始读 length 个字节。 d availablef )给出可以读入的字节数. e当处理完数据流时,应当关闭该数据流,以便释放该数据流所关联的资源. public void close( ) throws lOException (2) 输出字节流 OutputStream.。 a有时输出流会先输出到缓存中,最后再一起将数据写到指定的位置(如文件)。方 法()强制将缓存中的数据写到指定的位置(如文件/标准输出)。 三文件与数据流: FilelnputStream以字节为单位从文件中读取数据 FileOutputStream以字节为单位向文件中写数据 FileReader以字符为单位读取文件数据 FileWriter以字符为单位写数据到文件中 RandomAccessFile以字节为单位从文件中读数据或向文件中写数据 java.io.DatalnputStream 和类 java.io.DataOutputStream 提供读写基于数据类型的方法。 可以读取八种基本数据类型的数据。 四带缓存的数据流: (1) 输入/输出(I/O)的缓存机制:提高输入/输出(I/O)性能的一种方法输入/输出 (I/O)往往很慢,常常是计算机处理事务的瓶颈一次输入/输出大量数据比分成很多次 输输出要快很多将输出数据暂时放在内存中的某个位置(称为缓存) 整个缓存写到指定位置(如硬盘)类 java.io.BufferedlnputStream 和类 java.io.BufferedOutputStream是带缓存的输入/输出流 (2构造方法(仅各有两种): public BufferedStream(Stream in) public BufferedStream(Stream in, int size) public BufferedOutputStream(OutputStream out) public BufferedOutputStream(OutputStream out, int size) 构建 B ufferedlnputStream 和 B ufferedOutputStream 对象时,需要 Stream 和 Outputstream类型的实例(见构造函数)。 最佳缓存大小高度依赖于机器平台以及输入/输出的数据大小 (3) 两个类为Stream> Outputstream类的对象增加缓冲区功能,默认缓冲 区buf大小:8192字节,两个类的对象实例各自维护一个缓冲区; 读取数据源时,尽量将buf填满,使用read。方法时,先从buf读入,当buf 中数据不足时,对象才实现给定的Stream对象的read()方法,从数据源读数据。 写数据时,先将数据写至buf中,当buf满时,才实现Outputstream对象的 write。方法,将buf数据写入目的地. 五输入字符和输出字符流。 输入/输出流针对的是字节流,读写器是基于字符的字符流 处理文本数据可以采用类: java.io.Reader 和 java.io.Writer 类java.io.Reader和java.io.Writer是抽象(abstract)类,是其它文本读写器的父类 六 StreamReader 和 OutputStreamWriter 若对Stream和Outputstream进行字符处理,可以使用下面的方法为其加上字符 处理功能: 类java.io.StreamReader起到了从字节输入流到字符输入流的桥梁作用 七例题演示: (1)输入流 import j ava. io. Stream; import java.io.IOException; public class StreamDemo { public static void main(String[] args) ( try { while(true) ( int k=System.in.read(); if(k==-l) (break;} System.out.printC输入的字符的数值为:”+k); System.out.println(“可读入的字符数:“+System.in.available。); catch(IOException e) (e.printStackTrace();} } 454545454 输入的字符的数值为: 输入的字符的数值为: 输入的字符的数值为: 输入的字符的数值为: 输入的字符的数值为: 输入的字符的数值为: 输入的字符的数值为: 输入的字符的数值为: 输入的字符的数值为: 输入的字符的数值为: 输入的字符的数值为: 输入的字符的数值为: 输入的字符的数值为: 52可读入的字符数:10 53苛读入的字将如9 52可读入的字特剪(:8 53