电子教案·Java面向对象程序设计(第二版).ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《电子教案·Java面向对象程序设计(第二版).ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 教案 Java 面向 对象 程序设计 第二
- 资源描述:
-
1、Java面向对象程序设计(第二版)主编 赵生慧 中国水利水电出版社第10章 Java的输入与输出流本章内容 文件流及其常用方法 字节流及其子类实现输入输出 字符流及其子类实现输入输出 随机读写文件流。对象串行化教学目标 理解Java中流的概念 掌握字节输入流InputStream和字节输出流OutputStream及其子类的使用 掌握字符输入流Reader和字符输出流Writer及其子类的使用 掌握随机读写文件流RandomAccessFile的使用 掌握对象串行化方法10.110.1引例引例 输入与输出(I/O)是计算机与外部世界沟通的桥梁。Java中提供了许多功能强大的类来实现多种类型数据
2、的输入输出。前面几章中,我们使用System.out对象的方法.在控制台上显示输出结果,这是标准的输入输出,本章将学习其他形式的输入输出。Java中所有的输入/输出都是以流的形式进行处理的。Java的输入输出数据流包括字节流、字符流、文件流、对象流,以及多线程之间通信的管道流。在介绍Java输入输出流之前,先看一个实例。例10.1简单记事本:设计一个如图10.1所示的界面,用户在文本区输入文本以后,当单击按钮“保存文件”后,则将文本区的内容写入到指定的文件中。分析:要设计一个如图10.1所示的界面,窗口的名称为目标文件名,中间是一个文本域,接收用户从键盘输入的文本,底端是一个按钮,单击该按钮后
3、,将用户输入的内容写入指定的目标文件。10.110.1引例(续)引例(续)/Jpro10_1.javaimport java.awt.*;import java.awt.event.*;import java.io.*;public class Jpro10_1 extends WindowAdapter implements ActionListenerFrame f;Button btn;TextArea ta;String fileName;public static void main(String args)new Jpro10_1(output.txt);public Jpro10
4、_1(String fileName)this.fileName=fileName;f=new Frame(fileName);f.addWindowListener(this);btn=new Button(保存文件保存文件);btn.addActionListener(this);ta=new TextArea(10,40);f.add(ta,BorderLayout.CENTER);f.add(btn,BorderLayout.SOUTH);f.pack();f.setVisible(true);public void actionPerformed(ActionEvent e)try
5、FileOutputStream fout=new FileOutputStream(fileName);byte buf=ta.getText().getBytes();fout.write(buf);fout.close();catch(IOException ioe)System.err.println(e);public void windowClosing(WindowEvent e)System.exit(0);10.110.1引例(续)引例(续)10.2 10.2 流流根据流中的数据传输的方向,将流分为输入流和输出流。当程序需要读取数据的时候,就会生成一个通向数据源的流,这个数据
6、源可以是文件、内存,或是网络连接,这时称该流为输入流(InputStream),如图10.2所示。当程序需要写入数据的时候,就会生成一个通向目的地的流,此时流被称为输出流(OutputStream),如下图所示。源输 入流 从源 中读 出数据目的地输 出流 向目 的地 中写 入数据注意,流是有方向性的,输入流只能从中读取数据,而不能往一个输入流中写数据。同样的,也不能从一个输出流中读数据。10.310.3标准输入标准输入/输出流输出流 System类管理标准输入/输出流和错误流。它提供了标准输入流Syetem.in,标准输出流System.out,以及错误流System.err。通过Syste
7、m类的基本属性in,可以获得一个InputStream对象,其语句为:InputStream is=System.in;它是一个标准输入流,一般接收键盘的响应,得到键盘所传递来的数据。System.out 是标准输出流,一般用于向显示设备(一般是显示器)输出数据。它是Java.io包中PrintStream类的一个对象,其println()、print()和write()方法用于输出数据。和System.out一样,System.err也是一个PrintStream对象,用于向显示设备输出错误信息。例10.2从键盘读入若干字符,然后转换为字符串并在显示器上显示出来。/Jpro10_2.java
8、import java.io.*;public class Jpro10_2 public static void main(String args)InputStream is=System.in;try byte bs=new byte512;int len=is.read(bs);String str=new String(bs);System.out.println(输入的内容:+str);is.close();catch(IOException e)e.printStackTrace();10.310.3标准输入标准输入/输出流(续)输出流(续)10.4 10.4 文件访问文件访问
9、File类是一个和流无关的类。File类不仅提供了操作文件的方法,也提供了操作目录的方法。对于目录,Java把它当作一种特殊的文件,即文件名的列表。通过File类的方法,可以得到文件或目录的描述信息,包括名称、所在路径、读写性、长度等,还可以创建新目录、创建临时文件、改变文件名、删除文件、列出一个目录中所有的文件或与某个模式相匹配的文件等操作。10.4 10.4 文件访问(续)文件访问(续)1File类构造方法类构造方法 File类主要有四个构造方法:类主要有四个构造方法:public File(String pathname)public File(File parent,String ch
10、ild)public File(String parent,String child)public File(URI uri)其中,第四个构造方法参数其中,第四个构造方法参数URI 转换为一个抽象路径名来创建一个新的转换为一个抽象路径名来创建一个新的 File 实例,使用时实例,使用时还与具体的机器有关,该方法很少使用,这里就不详细介绍了。参数还与具体的机器有关,该方法很少使用,这里就不详细介绍了。参数pathname和和child指定指定文件名,文件名,parent指定目录名,目录名既可以是字符串,也可以是指定目录名,目录名既可以是字符串,也可以是File对象。对象。注意,表示文件路径时,使
11、用转义的反斜线作为分隔符,即“”代替“”,以“”开头的路径名表示绝对路径,否则表示相对路径。10.4 10.4 文件访问(续)文件访问(续)2File类提供的方法类提供的方法(1)文件操作文件操作 public String getName()/返回文件对象名,不包含路径名返回文件对象名,不包含路径名 public String getPath()/返回相对路径名,包含文件名返回相对路径名,包含文件名 public String getAbsolutePath()/返回绝对路径名,包含文件名返回绝对路径名,包含文件名 public String getParent()/返回父文件对象的路径名返
12、回父文件对象的路径名 public File getParentFile()/返回父文件对象返回父文件对象 public long length()/返回指定文件的字节长度返回指定文件的字节长度 public boolean exists()/判断指定文件是否存在判断指定文件是否存在 public long lastModified()/返回指定文件最后被修改的时间返回指定文件最后被修改的时间 public boolean renameTo(File dest)/文件重命名文件重命名 public boolean delete()/删除空目录删除空目录 public boolean canRe
13、ad()/判断文件是否可读判断文件是否可读 public boolean canWrite()/判断文件是否可写判断文件是否可写(2)目录操作目录操作 public boolean mkdir()/创建指定目录,正常建立时返回创建指定目录,正常建立时返回true public String list()/返回目录中的所有文件名字符串返回目录中的所有文件名字符串 public File listFiles()/返回目录中的所有文件对象返回目录中的所有文件对象例10.3获取c盘下Jpro10_3.java文件的文件名、父路径、长度等信息。/Jpro10_3.javaimport java.io.*
14、;public class Jpro10_3 public static void main(String args)File file=new File(C:Jpro10_3.java);if(file.exists()String name=file.getName();String parent=file.getParent();long leng=file.length();boolean bool=file.canWrite();System.out.println(文件名称为:+name);System.out.println(文件目录为:+parent);System.out.p
15、rintln(文件大小为:+leng+bytes);System.out.println(是否为可改写文件:+bool);10.4 10.4 文件访问(续)文件访问(续)10.5 10.5 字节流字节流 10.5.1 InputStream和和OutputStream类类 1.InputStream类类 InputStream是一个抽象类,它定义了基本的字节数据读入方法,子类是对其实现或进一步扩展功能,它们的继承关系子图如下图所示。InputStreamByteArraryInputStreamFileInputStreamFilterInputStreamPipedInputStreamOb
16、jectInputStreamBufferedInputStreamDataInputStreamLineNumberInputStream10.5.1 InputStream10.5.1 InputStream和和OutputStreamOutputStream类(续)类(续)1.InputStream类成员方法(续)类成员方法(续)成员方法成员方法主要功能主要功能public abstract int read()throws IOException自输入流中读取一个字节自输入流中读取一个字节public int read(byte b)throws IOException将输入的数据存放
17、在指定的字节数组将输入的数据存放在指定的字节数组public int read(byte b,int offset,int len)throws IOException自输入流中的自输入流中的offset位置开始读取位置开始读取len个字节并存个字节并存放在指定的数组放在指定的数组b中中public void reset()throws IOException将读取位置移至输入流标记之处将读取位置移至输入流标记之处public long skip(long n)throws IOException从输入流中跳过从输入流中跳过n个字节个字节public int available()throws
18、 IOException返回输入流中的可用字节个数返回输入流中的可用字节个数public void mark(int readlimit)在输入流当前位置加上标记在输入流当前位置加上标记public boolean markSupported()测试输入流是否支持标记测试输入流是否支持标记(mark)用的所有资源用的所有资源public void close()throws IOException关闭输入流关闭输入流,并释放占用的所有资源并释放占用的所有资源 2.OutputStream类类 InputStream类也是抽象类,它定义了基本的数据写出方法,如write()方法。所有的字节输出流
19、都是OutputStream类及其子类,它们继承关系子图如下图所示。10.5.1 InputStream10.5.1 InputStream和和OutputStreamOutputStream类(续)类(续)OutputStreamByteArraryOutputStreamFileOutputStreamFilterOutputStreamPipedOutputStreamObjectOutputStreamBufferedOutputStreamDataOutputStreamPrintStream10.5.1 InputStream10.5.1 InputStream和和OutputSt
20、reamOutputStream类(续)类(续)2.OutputStream成员方法成员方法成员方法成员方法主要功能主要功能public abstract void write(int b)throws IOException写一个字节写一个字节public void write(byte b)throws IOException写一个字节数组写一个字节数组public void write(byte b,int offset,int len)throws IOException将字节数组将字节数组b中从中从offset位置开始的、长度为位置开始的、长度为len个字个字节的数据写到输出流中节的
21、数据写到输出流中public void flush()throws IOException写缓冲区内的所有数据写缓冲区内的所有数据public void close()throws IOException关闭输出流关闭输出流,并释放占用的所有资源并释放占用的所有资源(1)构造方法)构造方法 为了创建FileInputStream类的对象,用户可以调用它的构造方法。FileInputStream类主要有三个构造方法:FileInputStream(String name)FileInputStream(File file)FileInputStream(FileDescriptor fd)第一个
22、构造方法使用给定的文件名name创建一个FileInputStream对象,用来打开一个到达该文件的输入流,这个文件就是源。第二个构造方法使用File对象FileInputStream对象,用来指定要打开哪个文件。第三个构造方法比较特别,是以FileDescriptor对象为参数的。10.5.2 FileInputStream10.5.2 FileInputStream类和类和FileOutputStreamFileOutputStream类类(2)读取字节的方法)读取字节的方法在创建文件输入流对象之后,可以调用read方法从流中读取字节,read方法有三种格式:public int read
23、()throws IOExceptionpublic int read(byte b,int off,int len)throws IOException public int read(byte b)throws IOExceptionread()方法将返回一个整数,它包含了流中的下一个字节。如果返回的是-1,则表示到达了文件输入流的末尾。这种方法每次只能从文件输入流中读取一个字节,为了能从流中读入多个数据字节,可以调用read(byte b,int off,int len)方法,该方法从输入流当前字节处起读取长度为len字节的数据,从位置off处起存入数组b中,b中位置在 off之前和在o
24、ff+len之后的数据将保持不变,返回读取的数据长度,并将第len个字节设为当前字节。但是在使用FileInputStream类时要注意,若关联的目录或者文件不存在,Java就会抛出一个IOException异常。程序可以使用try-catch块检测和处理捕捉到的异常。例如,为了把一个文件输入流对象与一个文件关联起来,可以使用下列的代码段来处理Java产生的IOEception异常。try FileInputStream fis=new FileInputStream(java7.txt);catch(IOException e)System.out.println(File Exceptio
25、n:+e);10.5.2 FileInputStream10.5.2 FileInputStream类和类和FileOutputStreamFileOutputStream类(续)类(续)(3)关闭输入流)关闭输入流 public void close()throws IOException 虽然Java在程序结束时会自动关闭所有打开的流,但还是建议大家养成一个良好的习惯,在使用完流后,调用close()方法显式地关闭任何打开的流,以防止一个被打开的流用完系统资源。10.5.2 FileInputStream10.5.2 FileInputStream类和类和FileOutputStreamF
展开阅读全文