北京大学JAVA讲义__第六章 数据流的应用课件

上传人:我*** 文档编号:145484842 上传时间:2020-09-20 格式:PPT 页数:47 大小:128KB
返回 下载 相关 举报
北京大学JAVA讲义__第六章 数据流的应用课件_第1页
第1页 / 共47页
北京大学JAVA讲义__第六章 数据流的应用课件_第2页
第2页 / 共47页
北京大学JAVA讲义__第六章 数据流的应用课件_第3页
第3页 / 共47页
北京大学JAVA讲义__第六章 数据流的应用课件_第4页
第4页 / 共47页
北京大学JAVA讲义__第六章 数据流的应用课件_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《北京大学JAVA讲义__第六章 数据流的应用课件》由会员分享,可在线阅读,更多相关《北京大学JAVA讲义__第六章 数据流的应用课件(47页珍藏版)》请在金锄头文库上搜索。

1、第6章 数据流的运用,北京大学计算机系 代亚非,2,第6章 数据流的运用,6.1 输入输出方法 6.2 输入输出流的基类 6.3 File I/O 6.4 数据输入输出流 6.5 随机存取文件 6.6 文件的其它操作 6.7 java中的unicode 6.8 管道流 6.9 对象流 6.10 流的分类 6.11 小结,3,文件,程序,终端,文件,程序,网络端点,数据流,起点,终点,网络端点,文件,字符串 存储区,6.1 输入输出方法,什么是数据流 ?,数据流是指所有的数据通信通道 在java中有关流的操作使用java.io.* 出于安全的考虑,小应用不能实现文件I/O流,4,6.1 输入输出

2、方法,System类管理标准输入输出流和错误流 System.out: 把输出送到缺省的显示(通常是显示器) System.in 从标准输入获取输入(通常是键盘) System.err 把错误信息送到缺省的显示 每当main方法被执行时,就自动生成上述三个对象,5,6.1 输入输出方法,public class ReadHello public static void main(String args) char inchar; System.out.println(“Enter a character:”); try inChar=(char)System.in.read(); Syste.

3、out.println(“ “+ inChar); catch(IOException e) Sytem.out.println(“Error reading from user”); ,6,streamIostream.class-f4.bat,6.1 输入输出方法,import java.io.*; class IOTest public statics void main(String args) try byte bArray=new byte128; System.out.println(“Enter something:”); System.in.read(bArray); Sys

4、tem.out.print(“You entered:”); System.out.println(bArray); catch(IOException ioe) System.out.println(ioe.toString(); ,7,6.1 输入输出方法,为什么输入的是字符,输出是乱码? 原因:System.out.println(bArray)输出的是数组的地址而不是字符 改进:将字符数组变换成字符串 原来是:System.out.println(bArray); 现在为:String s=new String(bArray,0); System.out.println(s); Sys

5、tem.in是属于BufferedInputStream类型 System.out是属于PrintStream类型 System.err也是属于PrintStream类型,8,6.2 输入输出流的基类,Java中每一种流的基本功能依赖于基本类InputStream和OutputStream 它们是抽象类,不能直接使用 属于InputStream类的方法有: read():从流中读入数据 skip():跳过流中若干字节数 available():返回流中可用字节数 mark():在流中标记一个位置 reset():返回标记过得位置 markSupport():是否支持标记和复位操作 close(

6、):关闭流,9,6.2 输入输出流的基类,方法read()提供了三种从流中读数据的方法. int read():读一个整数 int read(byte b):读多个字节到数组中 int read(byte,int off,int len); 属于OutputStream类的方法有: write(int b):将一个整数输出到流中 write(byte b):将数组中的数据输出到流中 write(byte b, int off,int len):将数组b中从off指定的位置开始len长度的数据输出到流中,10,6.2 输入输出流的基类,flush():将缓冲区中的数据强制送出 close():关

7、闭流. PrintStream类 println()不属于OutputStream类,它是PrintStream类的子类,能提供复杂的输出 PrintStream类的方法有: write, flush, checkError,print, println,close. 其中println可以输出多种形式的数据.例如: println(String s), println(char c)等,11,read,write,6.3 File I/O,文件对象的建立 File fp=new File(“tempfile.txt”); 对文件操作要定义文件流 FileInputStream类用来打开一个输

8、入文件 FileOutputStream类用来打开一个输出文件,12,6.3 File I/O,文件流的建立 FileInputStream in=new FileInputStream(fp); FileOutputStream out=new FileOutputStream(fp); 例:文件拷贝(注意要捕获文件异常) 输入流的参数是用于输入的文件名 输出流的参数是用于输出的文件名,13,6.3 File I/O,import java.io.*; class filestream public static void main(String args) try File inFile=

9、new File(”file1.txt); File outFile=new File(”file2.txt); FileInputStream fis=new FileInputStream(inFile); FileOutputStream fos=new FileOutputStream(outFile); int c; while(c=fis.read()!=-1) fos.write(c); fis.close(); fos.close(); catch(FileNotFoundException e) System.out.println(FileStreamsTest: +e);

10、 catch(IOException e) System.err.println(FileStreamsTest: +e); ,14,6.3 File I/O,增加缓冲区流,减少访问硬盘的次数,提高效率,file1.txt,file2.txt,输入流,输出流,输入缓冲区,输出缓冲区,15,6.3 File I/O,缓冲区流: BufferedInputStream和 BufferedOutputStream 将它们与文件流相接 FileInputStream in=new FileInputStream(“file1.txt”); BufferedInputStream bin= new Bu

11、fferedInputStream(in,256) int len; byte bArray=new byte256; len=bin.read(bArray); len中得到是长度, bArray中得到的是数据,16,6.3 File I/O,只有缓冲区满时,才会将数据送到输出流. Java在输出数据流中,当对方尚未将数据取走时,程序就会被阻塞. 有时要人为地将尚未填满的缓冲区中的数据送出,使用flush()方法.,文件,17,6.4 数据输入输出流,什么时候需要数据输入输出流? 文件流和缓冲区流的处理对象是字节或字节数组,利用数据输入输出流可以实现对文件的不同数据类型的读写. DataIn

12、putStream、DataOutputStream 一种较为高级的数据输入输出方式,除了字节和字节数组,还可以处理int,float,boolean等类型. 还可以用readLine方法读取一行信息 可使用的方法: write,writeBoolean,read,readByte等,18,6.4 数据输入输出流,数据流的建立 FileOutputStream fos= new FileOutputStream(”file2.txt); DataInputStream dis= new DataInputStream(fos) 数据输出流可以是一个已经建立好的输入数据流对象,例如网络的连结,文

13、件等. 下面的例子显示如何利用数据输入输出流往文件中写不同类型的数据,19,6.4 数据输入输出流,class datainput_output public static void main(String args) throws IOException FileOutputStream fos=new FileOutputStream(“a.txt”); DataOutputStream dos=new DataOutputStream (fos); try dos.writeBoolean(true); dos.writeByte(byte)123); dos.writeChar(J);

14、 dos.writeDouble(3.141592654); dos.writeFloat(2.7182f); dos.writeInt(1234567890); dos.writeLong(998877665544332211L); dos.writeShort(short)11223); finally dos.close(); ,20,Streamdatainputandoutput-f5.bat,6.4 数据输入输出流,DataInputStream dis=new DataInputStream( new FileInputStream(”a.txt); try System.out

15、.println(t +dis.readBoolean(); System.out.println(t +dis.readByte(); System.out.println(t +dis.readChar(); System.out.println(t +dis.readDouble(); System.out.println(t +dis.readFloat(); System.out.println(t +dis.readInt(); System.out.println(t +dis.readLong(); System.out.println(t +dis.readShort();

16、finallydis.close(); ,21,6.4 数据输入输出流,DateLine(InputStream in)(计算字符和行数) DataInputStream data=new DataInputStream(in); String currentLine; int lineCount=0; int charCount=0; while(currentLine=dataIn.readLine()!=null) +lineCount; charCount+=currentLine.length(); return (charCount/(float)lineCount); ,22,6.5 随机存取文件,类RandomAccessFile zip文件需要用随机方法处理 文件目录给出个文件的入口,可以随机读

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号