JavaPPT第六章输入输出流.ppt

上传人:牧羊曲112 文档编号:6509373 上传时间:2023-11-07 格式:PPT 页数:25 大小:214.99KB
返回 下载 相关 举报
JavaPPT第六章输入输出流.ppt_第1页
第1页 / 共25页
JavaPPT第六章输入输出流.ppt_第2页
第2页 / 共25页
JavaPPT第六章输入输出流.ppt_第3页
第3页 / 共25页
JavaPPT第六章输入输出流.ppt_第4页
第4页 / 共25页
JavaPPT第六章输入输出流.ppt_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《JavaPPT第六章输入输出流.ppt》由会员分享,可在线阅读,更多相关《JavaPPT第六章输入输出流.ppt(25页珍藏版)》请在三一办公上搜索。

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

2、节流由两个类层次结构定义。在顶层有两个抽象类: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:缓冲输出字符流 FileReade

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

5、义如下: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)其中,inputReader是链接被创建的BufferedR

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

7、ad()和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(String args)BufferedReader ss=new BufferedRe

8、ader(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.out.println(b);System.out.println(c);catch(IOException e)Sy

9、stem.out.println(there are some wrong in I/O);,注:捕获的异常类型是Exception时,若输入数据不符合parse方法的参数要求,该异常会被捕获到。捕获的异常类型是IOException时,若输入的数据不符合parse方法的参数要求,该异常不会被捕获到,出现运行时错误。,异常类型可以是Exception,10,程序运行时,从键盘输入:1234(若输入非数字串则有运行错误)wrh输出 1234 字符串 1234 整型数据 1234.0 实型数据 w 字符型数据,11,3.每行输入多个数据项 上面的例子采用逐行读取字符的方法,然后把每行数据作为输入赋

10、给一个变量。如果希望每行数据包含多个子数据项,Java提供了专门的类StringTokenizer来分解一个包含分隔符号的大的字符串。用法如下:StringTokenizer st=new StringTokenizer(line,“:”)这里的字符串line的分隔符指定为“:”。也可指定多个分隔符,如果未指定分隔符,则使用缺省分隔符,即“空格”,“TAB”,”回车”。StringTokenizer st=new StringTokenizer(line)StringTokenizer有两个方法,nextToken()返回下一个标记,hasMoreTokens()返回后面是否还有标记。,12,

11、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 String4;int a,fieldcount=0;float b;char c;,13,try input=ss.readLine();/读取一行 StringToke

12、nizer 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.println(s);System.out.println(a);System.out.println(b);System.out.println(c);catch(IOException e)System

13、.out.println(there are some wrong in I/O);,14,二、控制台输出,Java使用System.out向控制台写数据,这种写数据方式是字节流的方式,另外,Java还提供基于字符的写操作,这个类是PrintWriter.PrintWriter定义了多个构造函数,下面是常用的一个:PrintWriter(OutputStream outputStream,Boolean flushOnNewline)其中,flushOnNewline控制Java是否在println()方法被调用时刷新输出流。如果flushOnNewline为true,刷新自动发生,否则,则不

14、发生。,15,import java.io.*;class PrintWriterDemopublic 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.println(s);pw.println(i);pw.println(f);,16,例:从键盘上输入任意两个整数,求它们的和。,import java.io.*;public class InputDemo public static vo

15、id 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.parseInt(read.readLine();b=Integer.parseInt(read.readLine();c=a+b;pw.println(c=+c);catch(IOException e)pw.println(there are some errors)

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

17、er input=new BufferedReader(new InputStreamReader(System.in);try PrintWriter out=new PrintWriter(new FileWriter(e:/java/file/people.dat);,19,for(i=0;i3;i+)read=input.readLine();people.name=read;read=input.readLine();people.age=Integer.parseInt(read);read=input.readLine();people.id=read;out.println(p

18、eople.name+people.age+people.id);out.close();catch(IOException e)System.out.println(Error for create File);,20,class person public String name;public int age;public String id;,21,例2:从文件中读出数据,import java.io.*;import java.util.*;class FileR public static void main(String args)String read;try BufferedR

19、eader input=new BufferedReader(new FileReader(e:/java/file/people.dat);read=input.readLine();while(!read.equals(null)System.out.println(read);read=input.readLine();input.close();,22,catch(IOException e)System.out.println(the file is not found);catch(NullPointerException e)return;,23,6.4 File类,File类直

20、接处理文件和文件系统,它描述了文件本身的属性,例如:权限、时间、日期和目录路径。File类有三个构造函数。如下:File(String directoryPath);File(String directoryPath,String filename);File(File dirobj,String filename);,24,import java.io.File;class FileDemo static void p(String s)System.out.println(s);public static void main(String args)File f1=new File(e:/

21、java/file/people.dat);p(File Name:+f1.getName();p(Path:+f1.getPath();p(abc Path:+f1.getAbsolutePath();p(Parent:+f1.getParent();p(f1.canWrite()?is writeable:is not writeable);p(f1.canRead()?is readable:is not readable);p(file last modified:+f1.lastModified();p(File size:+f1.length()+Bytes);,25,输出结果如下:,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号