欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    Java教材课件输入输出流编程.ppt

    • 资源ID:6509824       资源大小:241.99KB        全文页数:48页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java教材课件输入输出流编程.ppt

    第13章 输入输出流编程,教学目的要求1.理解 java 语言中输入/输出流的处理方法;2.掌握文件、字节流和字符流的处理方法,正确使用对象串行化的方法。,13.1 File类应用举例,文件操作是程序设计必不可少的部分。计算机把需要长期保存的数据以文件的形式存放在各种外部存储设备上。在需要输入数据时,从文件读出数据;而需要输出数据时,把数据写入文件。,13.1.1 File类用来获取文件或目录的信息,Java把目录看成特殊的文件,作为文件名的列表处理,File类提供方法用以访问诸如路径、名称、大小、日期、读写属性等文件或目录的信息。也可以创建、删除文件、改变文件名、创建目录等。File类的直接父类是Object。,1.File类的构造方法,File类中常用的构造方法如下:public File(String pathname)其中的pathname是路径名字符串。该构造方法通过将给定路径名字符串转换成抽象路径名来创建一个新File实例。若给定字符串pathname是空字符串,则结果是空的抽象路径名。public File(File parent,String child)其中的parent是父抽象路径名、child是子路径名字符串。该构造方法根据parent抽象路径名和child路径名字符串创建一个新File实例。,public File(String parent,String child)其中参数parent是父路径名字符串、child是子路径名字符串。该构造方法根据parent路径名字符串和child路径名字符串创建一个新File实例。如果parent为null,则创建一个新的File实例,这与调用单参数File方法,以给定child路径名字符串作为参数的效果一样。否则,parent路径名字符串用于表示目录,而child路径名字符串用于表示目录或文件。如果 child路径名字符串是绝对路径名,则用与系统有关的方式将它转换成一个相对路径名。如果parent是空字符串,则新的File实例是通过将child转换成抽象路径名并根据与系统有关的默认目录来分析结果而创建的。否则,将每个路径名字符串转换成一个抽象路径名,并根据父抽象路径名分析子抽象路径名。,2.File类中的常用成员方法,File类中有许多成员方法,常用的成员方法及其功能概要描述见表13-1。限于篇幅的原因,读者在使用时可以参考Java API中对这些成员方法用法详细的说明。,public boolean canRead()测试应用程序能否读此对象指定的文件public boolean canWrite()测试应用程序能否写此对象指定的文件public boolean exists()测试此抽象路径名表示的文件或目录是否存public boolean isFile()测试此抽象路径名表示的文件是否是一个标准文件public String getAbsolutePath()返回抽象路径名的绝对路径名字符串public String getPath()将此抽象路径名转换为一个路径名字符串public String getParent()获取此对象指定的文件的父目录public boolean mkdir()根据当前对象生成一个由该对象指定的路径public String list()列出当前目录下的文件public long length()返回由此抽象路径名表示的文件的长度public String getName()获取此对象指定的文件的文件名public boolean delete()删除此抽象路径名表示的文件或目录public long lastModified()获取此对象指定文件的最后修改时间(以长整型值表示),表13-1 File类中的常用成员方法方法和描述,3.类变量(静态数据成员),File类中的静态数据成员及其概要描述见表13-2。表13-2 File类中的静态数据成员,/测试给定平台上的文件系统的文件的路径分隔字符等import java.io.*;class Li13_01public static void main(String args)System.out.println(File.pathSeparator);System.out.println(File.pathSeparatorChar);System.out.println(File.separator);System.out.println(File.separator+nn);,例13.1测试静态数据成员属性。,/用File类的构造方法构造文件对象并测试该类的成员方法import java.io.*;public class Li13_02 public static void main(String args)File file=new File(d:jdk15FileMethod.java);(可读?+file.canRead();(可写?+file.canWrite();(文件存在?+file.exists();(是文件?+file.isFile();(是目录?+file.isDirectory();(文件长度=+file.length();(文件最后修改日期:+file.lastModified();(文件名:+file.getName();(文件存放路径:+file.getPath();(文件存放路径的父目录:+file.getParent();,例13.2构造File对象、测试文件的属性等有关信息应用举例。,注意,本例程序在运行前,读者应确保d:jdk15文件夹中有FileMethod.java,当然,文件夹的名字也可由读者命名,但是,要注意同时更改程序中的相应文件夹名称。例13.3构造一个目录File对象,如果该指定的目录不存则创建该目录,同时统计并显示该目录下文件和子目录的个数以及该目录下文件的总长度。,import java.io.*;public class Li13_03 public static void main(String args)throws Exception File file=new File(d:/jdk15006/lib);if(!file.exists()file.mkdir();System.out.println(file.getPath();System.out.println(file.getParent();/变量tsize记录文件的总长度,变量fc,dc分别记录给定目录下的文件数和子目录数 int tsize=0,fc=0,dc=0;File files=new File(d:/jdk15006).listFiles();for(int i=0;ifiles.length;i+)if(filesi.isFile()fc+;else dc+;tsize+=filesi.length();(文件数:+fc+t目录数:+dc+t文件总长度:+tsize);,13.1.2 文件的处理,文件输入/输出流类FileInputStream和FileOutputStream提供了对文件顺序读/写的方法。文件输入流类FileInputStream用于读取文件中的字节数据,其直接父类为InputStream;文件输出流类FileOutputStream用于向文件写入的字节数据,其直接父类为OutputStream。,1.FileInputStream类的构造方法,public FileInputStream(String name)其中的name可以包含路径名和文件名,该构造方法通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的路径名name指定。public FileInputStream(File file)其中的file是File类的对象,该构造方法通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的 File对象file指定。public FileInputStream(FileDescriptor fd)该构造方法通过使用文件描述符fdObj创建一个FileInputStream,该文件描述符表示到文件系统中某个实际文件的现有连接。,2.FileOutputStream类的构造方法,public FileOutputStream(String name)该构造方法使用指定的字符串name创建一个向具有指定名称的文件中写入数据的输出文件流。public FileOutStream(File file)该构造方法使用指定的文件file创建一个向指定File对象表示的文件中写入数据的文件输出流。public FileOutputStream(File file,boolean append)创建一个向指定File对象表示的文件中写入数据的文件输出流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。,3.FileInputStream类的成员方法,FileInputStream类中的成员方法被调用时会产生IOException异常,常用成员方法见表13-3中的描述。表13-3 FileInputStream类中的常用成员方法,4.FileOutputStream类的成员方法,FileOutputStream类中的成员方法被调用时会产生IOException异常,常用成员方法见表13-4中的描述。表13-4 FileOutputStream类中的常用成员方法:,例13.4读文件和写文件举例。假设在D:有文件Li13_04.java,编程实现把该文件原样复制后存放在C:,文件名为Li13_04_FileCopy.txt。import java.io.*;class Li13_04 public static void main(String args)int length;byte buf=new byte1024;try FileInputStream in;FileOutputStream out;in=new FileInputStream(d:Li13_04.java);/运行前要保证d:有Li13_04.java这个文件 out=new FileOutputStream(c:Li13_04_FileCopy.txt);(文件拷贝输出成功。);while(length=in.read(buf,0,1024)!=-1)out.write(buf,0,length);catch(IOException e)System.out.println(Error:+e);System.exit(-1);,13.2 Reader与Writer类应用举例,从JDK1.1开始,java.io包中加入了专门用于处理字符流输入/输出的类,它们的基类分别是抽象类Reader及抽象类Writer。,13.2.1 Reader和Writer,Java提供了一系列用于处理字符流的接口和类,如Reader和Writer类,通过它们派生的子类对象来处理字符流。Reader类和Writer类提供的方法分别见表13-5和表13-6中的描述,注意它们被调用时也会产生异常。,表13-5 Reader类中的常用方法,表13-6 Writer类中的常用方法,13.2.2 InputStreamReader和OutputStreamWriter,InputStreamReader从输入流中读取字节数据,并将其转换为特定的平台上的字符数据,其构造方法为:public InputStreamReader(InputStream in)其中参数in是InputStream的对象,该构造方法可以创建一个使用默认字符集的InputStreamReader。public InputStreamReader(InputStream in,String enc)创建使用指定字符集的InputStreamReader。InputStreamReader的成员方法描述见表13-7,注意这些方法在被调用时也会产生异常。,表13-7 InputStreamReader类中的常用方法,OutputStreamWriter将特定平台的字符数据转换为字节数据,写入到输出流,其构造方法为:,public OutputStreamWriter(OutputStream out)其中参数out是OutputStream对象,该构造方法用来创建使用默认字符编码的 OutputStreamWriter。public OutputStreamWriter(OutputStream out,String enc)其中参数out是 OutputStream对象,参数enc是字符串名称,该构造方法创建使用指定字符集的 OutputStreamWriter。OutputStreamWriter的成员方法描述见表13-8,注意这些方法在被调用时也会产生异常。,表13-8 OutputStreamWriter类中的常用方法,例13.5读字符流文件:从给定的输入文件中读取字符流并在标准终端显示。,import java.io.*;public class Li13_05 public static void main(String args)throws IOException int c;FileInputStream is;InputStreamReader ir;is=new FileInputStream(CharInput.java);ir=new InputStreamReader(is);(-程序开始-);while(c=ir.read()!=-1)System.out.print(char)c);(-程序结束-);,例13.6写字符流文件:从标准终端上输入字符并写入字符输出文件。,import java.io.*;public class Li13_06 public static void main(String args)throws IOException int c;InputStreamReader ir=new InputStreamReader(System.in);FileOutputStream os=new FileOutputStream(c:/hhh.txt);OutputStreamWriter or=new OutputStreamWriter(os);(请输入字符(输入x结束,运行结束后请查看C:/hhh.txt):);while(c=ir.read()!=x)or.write(char)c);or.close();os.close();,例13.7读一行字符:从文件中按行读出文件中的各个字符并在标准终端上输出,文件名由命令行参数给出。,import java.io.*;public class Li13_07 public static void main(String args)throws IOException InputStream is=new FileInputStream(args0);InputStreamReader in=new InputStreamReader(is);BufferedReader br=new BufferedReader(in);String str;int c=0;while(str=br.readLine()!=null)/每次从文件中读一行字符 System.out.println(str);,13.3 InputStream与OutputStream类应用举例,java.io包中包含的两个基本的字节流类InputStream与OutputStream是所有字节流的基类。它们提供的方法通常在子类中被覆盖,以适合于特定的字节流的需要,提供最基本的输入/输出功能。,13.3.1 InputStream类,Inputstream抽象类中定义了所有输入字节流都需要的方法,完成最基本的从输入流读入数据的功能:public int read()public int read(byte b)public int read(byte b,int off,int len)public int available()public long skip(long n)public void mark()public void reset()public boolean mark supporeed()public void close(),具体使用时,从InputStream派生的子类中创建对象,完成不同情况下的输入操作。InputStream的常用子类如下:ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用;StringBufferInputStream:把一个String对象作为InputStream;FileInputStream:把一个文件作为InputStream,实现对文件的读取操作;PipedInputStream:实现了pipe的概念,主要在线程中使用;SequenceInputStream:把多个InputStream合并为一个InputStream。,13.3.2 OutputStream类,OutputStream抽象类中定义了所有字节输出流都需要的方法,完成向输出流写入数据的功能。public void write(int b)public void write(byte b)public void write(byte b,int off,int len)public void flush()public void close(),具体使用时,从OutputStream派生的子类中创建对象,完成不同情况下的输出操作。OutputStream的常用子类如下:ByteArrayOutputStream:把信息存入内存中的一个缓冲区中;FileOutputStream:把信息存入文件中;PipedOutputStream:实现了pipe的概念,主要在线程中使用;SequenceOutputStream:把多个OutputStream合并为一个OutputStream。,例13.8最基本的输入输出方法应用举例:键盘读入单个字节字符,多个字节字符并在屏幕输出显示。,import java.io.*;public class Li13_08 public static void main(String args)try InputStream is=System.in;OutputStream os=System.out;int i=is.read();/读入一个字节字符 os.write(char)i);/输出该字节字符 os.write(n);byte b=new byte8;int c=is.read(b);/读入的字节字符存入字节数组b中 for(i=0;ib.length;i+),os.write(bi);/输出数组b中的字节字符 os.write(n);c=is.read(b,3,5);/读入最多5个字节字符,存入数组b偏移3处 for(i=0;i b.length;i+)os.write(bi);/输出数组b中的字节字符 os.write(n);is.close();os.close();catch(IOException e)e.printStackTrace();,例13.9管道流类PipedInputStream和PipedOutputStream应用举例。,import java.io.*;/管道流的使用public class Li13_09 public static void main(String args)throws Exception PipedInputStream pis;PipedOutputStream pos;byte b;pis=new PipedInputStream();pos=new PipedOutputStream(pis);/流pos的输出作为流pis的输入 pos.write(a);/流pos的输出 pos.write(b);/流pos的输出 b=(byte)pis.read();/流pis的输入 System.out.println(b);b=(byte)pis.read();/流pis的输入 System.out.println(b);,13.4 数据流应用举例,DataInputStream 和DataOutputStream分别是过滤流FilterInputStream 和FilterOutputStream的子类,它们不仅能读/写字节流,而且能读/写Java语言的基本数据类型,这些基本数据类型在流中的表示与在内存中一样,不需转换。DataInputStream实现了接口DataInput中定义的与平台无关的带格式的读操作,从而实现了不同数据类型的读操作,其构造方法为:DataInputStream(InputStream in),public int read(byte b)public int read(byte b,int off,int len)public boolean readBoolean()public byte readByte()public char readChar()public double readDouble()public float readFloat()public void readFully(byte b)public void readFully(byte b,int off,int len)public int readInt()public String readLine()public long readLong()public short readShort()public int readUnsignedByte()public int readUnsignedShort()public String readUTF()public static String readUTF(DataInput in)public int skipBytes(int n),DataInputStream类的成员方法如下:,DataOutputStream实现了接口DataOutput中定义了与平台无关的带格式的写操作,从而实现了对不同数据类型的写操作,其构造方法为:DataOutputStream(OutputStream out),public void flush()public int size()public void write(byte b,int off,int len)public void write(int b)public void writeBoolean(boolean v)public void writeByte(int v)public void writeBytes(String s)public void writeChar(int v)public void writeChars(String s)public void writeDouble(double v)public void writeFloat(float v)public void writeInt(int v)public void writeLong(long v)public void writeShort(int v)public void writeUTF(String str),DataOutputStream类的成员方法如下:,例13.10数据流的使用:可以从数据输入流中按各种数据类型读数据,也可以往数据输出流中按各种数据类型写数据。,import java.io.*;/数据流的使用public class Li13_10 public static void main(String arg)throws Exception String f=c:/stu.dat;Student s=new Student(1000,95,true);FileOutputStream fos=new FileOutputStream(f);DataOutputStream out=new DataOutputStream(fos);/构造数据输入流对象 out.writeInt(s.id);/往数据输出流中写int型数据。out.writeDouble(s.score);/往数据输出流中double型写数据。out.writeBoolean(s.pass);/往数据输出流写boolean型数据。out.close();,FileInputStream fis=new FileInputStream(f);DataInputStream in=new DataInputStream(fis);int i=in.readInt();/从数据输入流中读int型数据 double d=in.readDouble();/从数据输入流中读double型数据 boolean b=in.readBoolean();/从数据输入流中读boolean型数据 System.out.println(i+n+d+n+b);in.close();class Student int id;double score;boolean pass;Student(int i,double d,boolean b)id=i;score=d;pass=b;,13.5 对象流应用举例,类ObjectInputStream中的readObject()方法用于读取一个对象,而类ObjectOutputStream中的writeObject()方法用于将对象保存在输出流中。例13.11对象流的使用:Employee类的对象有如下id、name、salary成员。每个对象可以作为一个整体存入一个输出流中,可以从一个输入流中作为一个整体读出。创建的Employee类要实现Serializable接口。,import java.io.*;/对象流的使用,public class Li13_11 implements Serializable/必须实现Serializable接口 int id;String name;double salary;Li13_11(int i,String n,double s)id=i;name=n;salary=s;public static void main(String arg)throws Exception String f=c:/emp;/产生名为emp的文件,并放在c:Li13_11 e1=new Li13_11(1000,Wang,3456.50);,FileOutputStream fos=new FileOutputStream(f);ObjectOutputStream out=new ObjectOutputStream(fos);/创建输出对象流 out.writeObject(e1);/写入对象 out.close();FileInputStream fis=new FileInputStream(f);ObjectInputStream in=new ObjectInputStream(fis);/创建输入对象流 Li13_11 e2=(Li13_11)in.readObject();/读取对象 System.out.println(Id:+e2.id);System.out.println(Name:+e2.name);System.out.println(Salary:+e2.salary);in.close();,本章小结,本章介绍了文件处理、字符流的处理、字节流的处理、过滤流的处理、对象的串行化及其常用的流。Java通过系统流类实现输入输出的功能,使用Java提供的系统流类可以创建文件、读文件、写文件。,本次课小结与下次课内容预告,今天我们学习了哪些主要内容?课后认真复习总结。,1.第十四章,

    注意事项

    本文(Java教材课件输入输出流编程.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开