javappt第六章输入输出流

上传人:tian****1990 文档编号:76100620 上传时间:2019-02-03 格式:PPT 页数:25 大小:337.31KB
返回 下载 相关 举报
javappt第六章输入输出流_第1页
第1页 / 共25页
javappt第六章输入输出流_第2页
第2页 / 共25页
javappt第六章输入输出流_第3页
第3页 / 共25页
javappt第六章输入输出流_第4页
第4页 / 共25页
javappt第六章输入输出流_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《javappt第六章输入输出流》由会员分享,可在线阅读,更多相关《javappt第六章输入输出流(25页珍藏版)》请在金锄头文库上搜索。

1、1,第六章 输入输出流,2,6.1 输入输出基础,在Java语言中,输入与输出完全基于“流”这个概念。Java输入输出的流式接口为复杂而繁重的I/O编程任务提供了一个简洁的抽象。,一、流的概念 Java程序通过流来完成输入/输出。流通过Java的输入/输出系统与物理设备链接。输入流能够抽象多种不同类型的输入:从磁盘文件、从键盘或从网络套接字。同样,一个输出流可以输出到控制台,磁盘文件或相连的网络。 二、字节流和字符流 在Java 2中,定义了两种类型的流:字节类和字符类。 1.字节流 字节流(byte stream)为处理字节的输入和输出提供了方便的方法。可以使用字节流读取或书写二进制数据。,

2、3,字节流由两个类层次结构定义。 在顶层有两个抽象类:InputStream和OutputStream。 这两个抽象类定义了实现其他流类的关键方法。最重要的两种方法是read()和write(),它们分别对数据的字节进行读写,这两种方法在InputStream和OutputStream中被定义为抽象方法,它们都被派生的流类重载。 下面是几个常用的具体的字节流类: BufferedInputStream:缓冲输入流 BufferedOutputStream:缓冲输出流 FileInputStream:读取文件的输入流 FileOutputStream:写文件的输出流 InputStream:描述

3、流输入的抽象类 OutputStream:描述流输出的抽象类 PrintStream:包含print()和println()的输出流 RandomAccessFile:支持随机文件输入/输出,4,2.字符流 字符流(character stream)为字符的输入和输出处理提供了方便。 字符流的顶层有两个抽象类:Reader和Writer。这两个抽象类定义了实现其他流类的关键方法。最重要的两种方法是read()和write(),它们分别进行字符的读写,都被派生的流类重载。 下面是几个常用的具体的字符流类: BufferedReader :缓冲输入字符流 BufferedWriter :缓冲输出字

4、符流 FileReader :读取文件的输入流 FileWriter :写文件的输出流 InputStreamReader :把字节转换成字符的输入流 LineNumberReader :计算行数的输入流 OutputStreamWriter :把字符转换成字节的输出流 PrintWriter :包含print()和println()的输出流 Reader :描述字符流输入的抽象类 Writer :描述字符流输出的抽象类,5,三、预定义流 所有的Java程序运行时自动导入java.lang包,这个包定义了一个名为System的类,该类封装了运行时环境的多个方面。System还包含有3个预定义的

5、字节流变量in、out和err。他们的定义如下: public static InputStream in; public static PrintStream out; public static PrintStream err;,6,6.2 控制台输入输出,一、控制台输入 1. BufferedReader缓冲输入字符流类 在Java 2中,读取控制台输入的首选方法应该是字符流,它使程序容易符合国际标准,并且易于维护。控制台输入由从System.in读取数据来完成。 BufferedReader的构造函数用法如下: BufferedReader(Reader inputReader) 其中

6、, inputReader是链接被创建的BufferedReader实例的流。 Reader是一个抽象的类,InputStreamReader是Reader的一个具体子类,该子类将字节转换成字符。 InputStreamReader的构造函数为: InputStreamReader(InputStream inputStream) 可以这样使用:InputStreamReader(System.in),7,综上所述,下面的代码创建了与键盘相连的BufferedReader对象: BufferedReader br =new BufferedReader(new InputStreamReade

7、r(System.in) 2. BufferedReader中重载方法read()和readLine() read()方法 int read() throws IOException 该方法每次执行都从输入流中读取一个字符,然后以整型形式返回。当遇到流的尾时,返回-1。 readLine()方法 String readLine() throws IOException 该方法每次执行从输入流中读取一行字符,然后以String形式返回。当遇到流的尾时,返回null。,8,import java.io.*; public class inputFIS public static void main

8、(String args) BufferedReader ss =new BufferedReader(new InputStreamReader(System.in); String s,input; int a; float b; char c; try input=ss.readLine(); s=input; a=Integer.parseInt(input); b=Float.parseFloat(input); c=(char)ss.read();,必须进行强制类型转换,9,System.out.println(s); System.out.println(a); System.o

9、ut.println(b); System.out.println(c); catch(IOException e) System.out.println(“there are some wrong in I/O“); ,注: 捕获的异常类型是Exception时,若输入数据不符合parse方法的参数要求,该异常会被捕获到。 捕获的异常类型是IOException时,若输入的数据不符合parse方法的参数要求,该异常不会被捕获到,出现运行时错误。,异常类型可以是Exception,10,程序运行时,从键盘输入: 1234 (若输入非数字串则有运行错误) wrh 输出 1234 字符串 1234

10、 整型数据 1234.0 实型数据 w 字符型数据,11,3. 每行输入多个数据项 上面的例子采用逐行读取字符的方法,然后把每行数据作为输入赋给一个变量。如果希望每行数据包含多个子数据项,Java提供了专门的类StringTokenizer来分解一个包含分隔符号的大的字符串。用法如下: StringTokenizer st=new StringTokenizer(line,“:”) 这里的字符串line的分隔符指定为“:” 。也可指定多个分隔符,如果未指定分隔符,则使用缺省分隔符,即“空格”,“TAB”,”回车”。 StringTokenizer st=new StringTokenizer(

11、line) StringTokenizer有两个方法,nextToken()返回下一个标记,hasMoreTokens()返回后面是否还有标记。,12,import java.io.*; import java.util.*; public class inputFIS public static void main(String args) BufferedReader ss = new BufferedReader(new InputStreamReader(System.in); String s,input; /暂时容纳输入数据的临时字符串数组 String field =new St

12、ring4; int a,fieldcount=0; float b; char c;,13,try input=ss.readLine(); /读取一行 StringTokenizer st=new StringTokenizer(input,“:“); while(st.hasMoreTokens() fieldfieldcount=st.nextToken(); fieldcount+; s=field0; a=Integer.parseInt(field1); b=Float.parseFloat(field2); c=(char)ss.read(); System.out.print

13、ln(s); System.out.println(a); System.out.println(b); System.out.println(c); catch(IOException e) System.out.println(“there are some wrong in I/O“); ,14,二、控制台输出,Java使用System.out向控制台写数据,这种写数据方式是字节流的方式,另外,Java还提供基于字符的写操作,这个类是PrintWriter. PrintWriter定义了多个构造函数,下面是常用的一个: PrintWriter(OutputStream outputStr

14、eam, Boolean flushOnNewline) 其中,flushOnNewline控制Java是否在println()方法被调用时刷新输出流。如果flushOnNewline为true,刷新自动发生,否则,则不发生。,15,import java.io.*; class PrintWriterDemo public static void main(String args) PrintWriter pw=new PrintWriter(System.out,true); String s=“this is a test“; int i=-7; float f=23.4f; pw.pr

15、intln(s); pw.println(i); pw.println(f); ,16,例:从键盘上输入任意两个整数,求它们的和。,import java.io.*; public class InputDemo public static void main(String args) BufferedReader read = new BufferedReader(new InputStreamReader(System.in); PrintWriter pw=new PrintWriter(System.out,true); int a,b,c; try a=Integer.parseIn

16、t(read.readLine(); b=Integer.parseInt(read.readLine(); c=a+b; pw.println(“c=“+c); catch(IOException e) pw.println(“there are some errors“); ,17,6.3 文件的读写,一、常用的类 对文件的读写操作和标准输入输出是十分类似的,需要注意的是要采用专门对文件操作的流,并应在合适的时候关闭流,否则系统资源无法得到释放。 对文件操作时,其输入输出流分别是FileReader和FileWriter。 二、举例 例1:创建文件,即从键盘上输入数据,写入磁盘文件。,18,import java.io.*; import java.util.*; class FileW public static void main(String args)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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