《09 第9章 输入输出流.ppt》由会员分享,可在线阅读,更多相关《09 第9章 输入输出流.ppt(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java 语言程序设计语言程序设计v天津理工大学天津理工大学 计算机与通信工程学院计算机与通信工程学院v主讲教师:孙世温主讲教师:孙世温第第9章章 输入输入/输出流输出流2022/12/202第第9章章 输入输入/输出流输出流主要内容主要内容v流流的基本概念的基本概念vjava.io包中提供的流类包中提供的流类v几种典型的几种典型的I/O操作操作n标准标准 I/OnFile I/On字节数组字节数组 I/On字符串字符串 I/On数据流数据流 I/On对象对象 I/OReaderWriterInputStreamOutputStream本章学习要求:本章学习要求:1)理解基本原理)理解基本原理
2、2)“掌握掌握”典型应用典型应用2022/12/203第第9章章 输入输入/输出流输出流流(流(Stream)v流的基础知识流的基础知识n一个流是读写的一个流是读写的源源或或目的目的地地l例如,一个需要键盘输入的程序可以用流来做到例如,一个需要键盘输入的程序可以用流来做到n两种基本的流(两种基本的流(输入流和输出流)输入流和输出流)l可以从输入流读,但不能对它写可以从输入流读,但不能对它写l可以向输出流写,但不能对它读可以向输出流写,但不能对它读n流的源和目的地可以是流的源和目的地可以是l键盘、显示器窗口、内存、磁盘文件键盘、显示器窗口、内存、磁盘文件等等2022/12/204第第9章章 输入
3、输入/输出流输出流vjava.io包中提供大量的流类以完成包中提供大量的流类以完成IO操作操作n4个个abstract类类n其子类具体完成其子类具体完成I/O操作操作InputStream(字节输入流)(字节输入流)OutputStream(字节输出流)(字节输出流)Reader(字符输入流)(字符输入流)Writer(字符输出流)(字符输出流)2022/12/205第第9章章 输入输入/输出流输出流abstract类:类:InputStream、OutputStreamvInputStream类方法类方法n三个基本的三个基本的read方法方法lint read()throws IOExcep
4、tion;lint read(byte)throws IOException;lint read(byte,int start,int len)throws IOException;n其他方法其他方法lvoid close()throws IOException;lint available()lvoid skip(long n)vOutputStream类方法类方法n三个基本的三个基本的write方法方法lvoid write(int)throws IOException;lvoid write(byte)throws IOException;lvoid write(byte,int sta
5、rt,int len)throws IOException;n其他方法其他方法lvoid close()throws IOException;lvoid flush()throws IOException;2022/12/206第第9章章 输入输入/输出流输出流abstract类:类:Reader、WritervReader类的方法类的方法n三个基本的三个基本的read方法方法lint read()throws IOException;lint read(char)throws IOException;lint read(char,int start,int len)throws IOExce
6、ption;n其他方法其他方法lvoid close()throws IOException;lint available()lvoid skip(long n)vWriter类的方法类的方法n三个基本的三个基本的write方法方法lvoid write(int)throws IOException;lvoid write(char)throws IOException;lvoid write(char,int start,int len)throws IOException;n其他方法其他方法lvoid close()throws IOException;lvoid flush()throw
7、s IOException;2022/12/207第第9章章 输入输入/输出流输出流InputStream及其子类及其子类vInputStreamnByteArrayInputStreamnFileInputStreamnFilterInputStreamlBufferedInputStream lDataInputStreamlLineNumberInputStream lPushbackInputStreamnObjectInputStream nPipedInputStreamnSequenceInputStream nStringBufferInputStream 分别将字节数组(By
8、teArray)、文件(File)、对象(Object)等作为输入流的“源”2022/12/208第第9章章 输入输入/输出流输出流OutputStream及其子类及其子类vOutputStreamnByteArrayOutputStreamnFileOutputStreamnFilterOutputStreamlBufferedOutputStream lDataOutputStreamlPrintStreamnObjectOutputStream nPipedOutputStream分别将字节数组(ByteArray)、文件(File)、对象(Object)等作为输出流的“目的地”2022
9、/12/209第第9章章 输入输入/输出流输出流Reader及其子类及其子类vReadernBufferedReaderlLineNumberReadernCharArrayReadernFilterReaderlPushbackReadernInputStreamReader lFileReadernPipedReader nStringReader分别将字符数组(CharArray)、文件(File)等作为输入流的“源”2022/12/2010第第9章章 输入输入/输出流输出流Writer及其子类及其子类vWriternBufferedWriternCharArrayWriter nFil
10、terWriternOutputStreamWriterlFileWriternPipedWriternPrintWriternStringWriter分别将字符数组(CharArray)、文件(File)等作为输出流的“目的地”2022/12/2011第第9章章 输入输入/输出流输出流典型典型I/O操作之一:标准操作之一:标准I/OvSystem.in和和System.outv从键盘接收输入数据从键盘接收输入数据njava.util.ScannerScanner sc=new Scanner(System.in);int a=sc.nextInt();n另一种方式:另一种方式:Buffere
11、dRead br=new BufferedReader(new InputStreamReader(System.in);v输出数据到显示器输出数据到显示器System.out.println()System.in为InputStream的对象 表示键盘System.out为PrintStream的对象 表示显示器2022/12/2012第第9章章 输入输入/输出流输出流v命令行参数和系统环境变量命令行参数和系统环境变量nJava命令命令java.exe可以携带参数,叫命令行参数可以携带参数,叫命令行参数java nmain方法中的参数方法中的参数args可以用来接受命令行参可以用来接受命令行
12、参数数public void static main(String args)largs0 第一个参数第一个参数largs1 第二个参数,第二个参数,2022/12/2013第第9章章 输入输入/输出流输出流典型典型I/O操作之二:文件操作之二:文件I/Ov“文件文件”的基本概念的基本概念vFile类类n创建创建File对象对象lFile(String filename)lFile(String directoryPath,String filename)lFile(File f,String filename)nFile类的方法类的方法l获取文件信息获取文件信息l目录相关目录相关l创建与删除
13、文件创建与删除文件2022/12/2014第第9章章 输入输入/输出流输出流v用于获取文件信息的用于获取文件信息的File类的方法:类的方法:npublic String getName()获取文件的名字。获取文件的名字。npublic boolean canRead()判断文件是否是可读的。判断文件是否是可读的。npublic boolean canWrite()判断文件是否可被写入。判断文件是否可被写入。npublic boolean exits()判断文件是否存在。判断文件是否存在。npublic long length()获取文件的长度(单位是字节)。获取文件的长度(单位是字节)。np
14、ublic String getAbsolutePath()获取文件的绝对路径。获取文件的绝对路径。npublic String getParent()获取文件的父目录。获取文件的父目录。npublic boolean isFile()判断文件是否是一个正常文件判断文件是否是一个正常文件public boolean isDirectroy()判断文件是否是一个目录。判断文件是否是一个目录。npublic boolean isHidden()判断文件是否是隐藏文件。判断文件是否是隐藏文件。npublic long lastModified()获取文件最后修改的时间。获取文件最后修改的时间。202
15、2/12/2015第第9章章 输入输入/输出流输出流v用于创建用于创建/删除文件的删除文件的File类的方法:类的方法:npublic boolean createNewFile()npublic boolean delete()例:例:File f=new File(c:myletter,letter.txt);f.createNewFile()f.delete();2022/12/2016第第9章章 输入输入/输出流输出流v目录相关的目录相关的File类的方法:类的方法:1 1)创建目录)创建目录 public boolean mkdir():创建一个目录:创建一个目录 2 2)列出目录中
16、的文件)列出目录中的文件n public String list()用字符串形式返回目录下的全部文件,用字符串形式返回目录下的全部文件,n public File listFiles()用用File对象形式返回目录下的全部文件。对象形式返回目录下的全部文件。n public String list(FilenameFilter obj)用字符串形式返回目录下用字符串形式返回目录下的指定类型的所有文件。的指定类型的所有文件。n public File listFiles(FilenameFilter obj)用用File对象返回目录下对象返回目录下的指定类型所有文件。的指定类型所有文件。【例例9
17、-1】2022/12/2017第第9章章 输入输入/输出流输出流v运行本机上的可执行文件运行本机上的可执行文件n 首先使用首先使用Runtime 类声明一个对象,如:类声明一个对象,如:Runtime ec;n 然后使用静态然后使用静态getRuntime()方法创建这个对象:方法创建这个对象:ec=Runtime.getRuntime();n ec可以调用可以调用exec(String command)方法打开方法打开本地机的可执行文件或执行一个操作。本地机的可执行文件或执行一个操作。【例例9-2】2022/12/2018第第9章章 输入输入/输出流输出流vFile IO 之之 顺序读写文件
18、顺序读写文件n文件字节流文件字节流lFileInputStreamlFileOutputStreamn文件字符流文件字符流lFileReaderlFileWritern缓冲流(读取缓冲流(读取/写入文本行)写入文本行)lBufferedReaderlBufferedWriter【例例9-3】【例例9-4】【例例9-5】BufferedReader必须与Reader流对象连接 BufferedWriter必须与Writer流对象连接2022/12/2019第第9章章 输入输入/输出流输出流vFile IO 之之 随机读写文件随机读写文件 RandomAccessFile类类n即能读,也能写即能读
19、,也能写n创建创建RandomAccessFile对象对象lRandomAccessFile(String name,String mode)lRandomAccessFile(File file,String mode)参数参数mode取取r(只读)或(只读)或rw(可读写),决定创建的(可读写),决定创建的流对文件的访问权利。流对文件的访问权利。【例例9-11】【例例9-12】2022/12/2020第第9章章 输入输入/输出流输出流典型典型I/O操作之三:字节数组操作之三:字节数组I/O、字符串、字符串I/Ov将将内存中的字节数组内存中的字节数组作为流的源和目标作为流的源和目标nByte
20、ArrayInputStreamnByteArrayOutputStreamv将将内存中的字符串内存中的字符串作为流的源和目标作为流的源和目标nStringReadernStringWriter【例例9-7】2022/12/2021第第9章章 输入输入/输出流输出流典型典型I/O操作之四:数据流操作之四:数据流I/OvDataInputStream和和DataOutputStreamn允许按照与机器无关的风格读取或写入数据允许按照与机器无关的风格读取或写入数据【例例9-8】2022/12/2022第第9章章 输入输入/输出流输出流典型典型I/O操作之五:对象操作之五:对象I/OvObjectI
21、nputStream和和ObjectOutputputStreamn构造方法:构造方法:lObjectInputStream(InputStream in)lObjectOutputStream(OutputStream out)nObjectOutputStream类的类的writeObject(Object obj)将将一个对象写入到输出流的目的地一个对象写入到输出流的目的地nObjectInputStream类的类的readObject(Object obj)从输入从输入流的源中读取一个对象流的源中读取一个对象n要求写入或读取的对象必须是要求写入或读取的对象必须是序列化序列化的,即实现的,即实现Serializable接口接口【例例9-9】2022/12/2023第第9章章 输入输入/输出流输出流本章小结本章小结v理解理解“流流”的概念的概念v掌握掌握java.io包中的流类及继承结构包中的流类及继承结构v掌握几种典型掌握几种典型I/O操作:操作:n标准标准 I/OnFile I/On对象对象 I/On2022/12/2024第第9章章 输入输入/输出流输出流
限制150内