Java程序设计(chap9)

上传人:ll****x 文档编号:243021884 上传时间:2024-09-14 格式:PPT 页数:44 大小:211.50KB
返回 下载 相关 举报
Java程序设计(chap9)_第1页
第1页 / 共44页
Java程序设计(chap9)_第2页
第2页 / 共44页
Java程序设计(chap9)_第3页
第3页 / 共44页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Java,程序设计基础,第,9,章 输入输出流,Java,语言为用户提供了功能很强的输入,/,输出系统。,Java,语言中的输入输出概念和,C+,语言一样,都是建立在流的基础上。,Java,语言除了定义在系统类中的标准输入,/,输出外,还在,java.io,包中以类的形式提供了多种读写数据的输入,/,输出流。本章主要介绍了,Java,的标准输入,/,输出流、一般文件输入,/,输出流、过滤输入,/,输出流和,File,类等。,9.1,标准输入,/,输出流,标准输入,/,输出流有,3,种标准流,都是由,java.lang.System,类来管理。,(1),标准输入:,System.in,用于程序输入,主要用来读入用户输入的内容。,(2),标准输出:,System.out,用于程序输出,主要用来显示输出信息。,(3),标准错误:,System.err,用于显示错误信息。,9.1.1,标准输入流,标准输入流用于从控制台输入信息。,System.in,类中提供了,read,()方法来读取输入内容,其参数可以是一个字符、一个字节数组或字节数组的一部分。,格式为:,System.in.read,(),;,其返回值为读到的字符或字符串,若读不到字符,则返回,-1.,一般采用输入结束标志(如回车键)来结束输入。,9.1.1,标准输入流,【,例,9-1】,用,System.in.read,()来读取用户输入的字符,在输入结束标志后显示输入的字符数。,import java.io.*;,class Count, public static void main(String args),throws java.io.IOException, int count=0;,System.out.println(Please input chars:);,while (System.in.read()!=n),count+;,System.out.println(You have inputted +count + chars.);,int r=-1;,try r=System.in.read();,catch (IOException e) ,9.1.1,标准输入流,9.1.2,标准输出流,标准输出和标准错误流主要用来在用户的终端窗口输出信息。标准输出流用于输出命令结果。而标准错误流用于输出程序运行过程中发生的错误。标准输出和标准错误流都是从,PrintStream,类导出的,因此可以使用,PrintStream,类的,3,个方法将信息输出到流中。这,3,个方法是:,print,()、,println,()和,write,()。,(1) print,()和,println,(),它们的功能基本相同,都是将字符串写入流中。,9.1.2,标准输出流,print,()和,println,()的区别是:,println,()能自动地将一个换行符加到输出的字符串后面,而,print,()不能。,println,()还有一个特殊的用法,当它不带参数时,只是输出一个新行。,(2) write,(),write,()方法用来向流中写入输出信息,和,read,()方法一样,它的参数也可以是一个字符、一个字节数组或字节数组的一部分。,9.1.2,标准输出流,【,例,9-2】,使用,println,()输出下列各种类型,boolean,、,char,、,String,、,int,、,long,、,float,、,double,的数据。,import java.io.*;,class DTPrintTest, public static void main(String args), boolean b=true;,char c=a,b,c;,String s=Java Language;,int i=20;,long l=123456;,float f=123.4f;,9.1.2,标准输出流,double d=12345.67,;,System.out.println(b=+b);,System.out.println(c=+c);,System.out.println(s=+s);,System.out.println(i=+i);,System.out.println(l=+l);,System.out.println(f=+f);,System.out.println(d=+d);,int r=-1;,try r=System.in.read();,catch (IOException e) ,9.1.2,标准输出流,9.2,一般文件的输入,/,输出流,一般文件的输入,/,输出流是通过,java.io,包中的两个类和来实现的。,9,2,1,文件输入流,Java,语言通过类实现文件字节流的输入。派生于,InputStream,,其类层次结构如下所示:,java.lang.Object,java.io.InputStream,java.io.,在具体实现时,首先通过文件名、文件对象或文件描述符对象创建一个文件输入流,然后通过这个流从文件中读取数据。,9.2.1,文件的输入流,1,)创建文件输入流,创建文件输入流对象的格式如下:,格式,1,:,对象名,= new (,文件名,);,格式,2,:,对象名,= null,;,对象名,= new (,文件名,);,2,) 从文件中读取数据,继承了,InputStream,读取数据的方法,read,(),所不同的是它从文件中读取数据。,9.2.1,文件的输入流,【,例,9-3】,创建文件输入流,in,,从,jabc.tmp,文件中读取数据,然后在读入过程中将操作信息在屏幕上显示。,import java.io.*;,class, public static void main (String args),throws IOException, output,();,byte buffer = new byte80;,in = null;,in = new (jabc.tmp);,if (in != null), System.out.println(Begin to read from jabc.tmp.);,in.read(buffer);,System.out.println(You have Read bytes+ buffer + from file);,in.close(); ,9.2.1,文件的输入流,public static void output(),throws IOException, out = null;,out = new (jabc.tmp);,byte sb=new byte80;,System.out.println(Please to input byte array sb:);,System.in.read(sb);,if (out!=null),System.out.println(Begin to write to jabc.tmp.);,out.write(sb);,System.out.println(You have Written bytes +sb+ to file.);,out.close();,9.2.1,文件的输入流,9.2.2,文件的输出流,Java,语言通过类实现文件字节流的输出。派生于,OutputStream,,其类层次结构如下所示:,java.lang.Object,java.io.OutputStream,java.io.,与一样,也通过文 件名、文件对象或文件描述符对象创建一个文件输出流,并通过这个流向文件中写入数据。,9.2.2,文件的输出流,1,)创建文件输出流,创建文件输出流对象的格式如下:,格式,1,:,对象名,= new (,文件名,);,格式,2,:,对象名,= null,;,对象名,= new (,文件名,);,2,)向文件写入数据,继承了,OutputStream,写入数据的,write,()方法,它具有向文件写入一个字节、一个字节数组和字节数组的一部分这三种形式。,9.2.2,文件的输出流,【,例,9-4】,从键盘输入一个字符串到字节数组,sb,,存储在磁盘文件,jabc.tmp,中,并在写入过程中将操作信息在屏幕上显示。,import java.io.*;,class, public static void main (String args),throws IOException,out = null;,out = new (jabc.tmp);,byte sb=new byte80;,System.out.println(Please to input byte array sb:);,System.in.read(sb);,9.2.2,文件的输出流,if (out!=null),System.out.println(Begin to write to jabc.tmp.);,out.write(sb);,System.out.println(You have Written bytes+sb+ to file.);,out.close(),int r=-1;,try r=System.in.read();,catch (IOException e) ,9.2.2,文件的输出流,9.2.2,文件的输出流,【例,9-5】,使用文件流的方法将一个文件的内容复制到另一个文件中。,源程序代码如下:,import java.io.*;,class, public static void main(String args), try, in = new (input.tmp);,out = new (output.tmp);,int c;,while (c = in.read()! = -1), out.write ( c );,in.close ();,out.close();,catch ( e), System.err.println ();,catch ( IOException e),System.err.println (IOException);,9.3,过滤输入,/,输出流,过滤输入,/,输出流也称缓冲文件的输入,/,输出流。,Java,的过滤输入,/,输出流是,java.io,包中的两个类,FilterInputStream,和,FilterOutputStream,的子类。它们是:,DataInputStream,和,DataOutputStream,BufferInputStream,和,BufferOutputStream,LineNumberInputStream,PushbackInputStream,PrintStream,过滤输入,/,输出流是指在读写数据的过程中可以处理数据的流。例如:通过类,DataInputStream,和,DataOutputStream,,可以按二进制方式对基本数据类型的数据和字符串向文件进行输入和输出。本节主要介绍,DataInputStream,和,DataOutputStream,过滤流的使用方法。,9.3.1,过滤输入流,过滤输入流,DataInputStream,派生于,FilterInputStream,,其类层次结构如下:,java.lang.Object,java.io.InputStream,java.io.FilterInputStream,java.io.DataInputStream,在使用,DataInputStream,时,必须首先将,DataInputStream,连接到其它的输入流上,然后使用,DataInputStream,的各种输入方法。,9.3.1,过滤输入流,1) DataInputStream,的连接,如:将,DataInputStream,过滤流连接到标准输入流上的语句如下:,DataInputStream dis = new DataInputStream(System.in.read();,又如:将,DataInputStream,过滤流连接到文件输入流上的语句如下:,in = new (jabc.tmp);,DataInputStream dis =new DataInputStream(in);,2,),DataInputStream,读数据的方法,DataInputStream,除了继承,FilterInputStream,类中的所有方法外,还增加了基本数据类型的读取方法,如表,9-1,所示。,9.3.1,过滤输入流,表,9-1 DataInputStream,读取方法,方法 描述,read(byte),从字节数组读取数据,read(byte,int,int),从字节数组读取部分数据,readboolean(),读取一个布尔变量,readbyte(),读取一个,8,位字节,readChar(),读取一个,16,位字节,readDouble(),读取,64,位双精度浮点数,readFloat(),读取一个,32,位浮点数,readFully(byte),读取字节数组,直到所有字节读取完,readFully(byte,int,int),读取字节数组的一部分,直到所有字节读取完,readInt(),读取一个,32,位整数,readLine(),读取以,an,,,r,,,rn,或,EOF,结束的一行,readLong(),读取,64,位长整数,readShort(),读取一个,16,位短整数,readUTF (),读取一个,UTF,格式的字符串,readUTF(DataInput),从给定流中读取一个,UTF,格式的字符串,readUnsignedByte(),读取一个,8,位无符号字节,readUnsignedShort(),读取一个,16,位短整数,9.3.1,过滤输入流,【,例,9-6】,将,DataInputStream,过滤流连接到标准输入流上,然后使用,DataInputStream,的,readLine,()方法。,源程序结构如下:,DataInputStream dis = new DataInputStream(System.in.read();,String input;,while (input =dis.readLine()!=null),9.3.1,过滤输入流,【,例,9-7】,采用过滤输入流的方法从文件,jabc.tmp,读入一个整数和一个字符串,并在读入过程中,用,System.out.println,()将操作信息显示出来。,import java.io.*;,public class DataDemo, public static void main(String args),throws IOExeption, output();,in = null;,in = new (jabc.tmp);,DataInputStream dataIn = null;,dataIn = new DataInputStream(in);,if (dataIn!=null), System.out.println (we begin to read from jabc.tmp);,i=dataIn.readInt();,System.out.println (Read an integer+i);,9.3.1,过滤输入流,str1=dataIn.readLine();,System.out.println (Read a string+str1);,dataIn.close ();,in.close ();,int r=0;,try r=System.in.read();,catch (IOException e) ,public static void output(),throws IOException,int j=34;,String str2=Java filterstream;,9.3.1,过滤输入流,out = null;,out = new (jabc.tmp);,DataOutputStream dataOut = null;,dataOut = new DataOutputStream(out);,if (dataOut!=null),System.out.println(We begin to write sth. to jabc.tmp.);,System.out.println(Write an integer +j);,dataOut.writeInt(j);,System.out.println(Write a string +str2);,dataOut.writeBytes(str2);,dataOut.close();,out.close();,9.3.1,过滤输入流,9.3.2,过滤输出流,过滤输出流,DataOutputStream,派生于,FilterOutputStream,,其类层次结构如下:,java.lang.Object,java.io.OutputStream,java.io.FilterOutputStream,java.io.DataOutputStream,9.3.2,过滤输出流,在使用,DataOutputStream,时,和使用,DataInputStream,一样,必须首先将,DataOutputStream,连接到其它的输出流上,然后使用,DataOutputStream,的各种输出方法。,1,),DataOutputStream,的连接,例如:将,DataOutputStream,过滤流连接到文件输出流上的语句如下:,out = new (jabc.tmp);,DataOutputStream dos =new DataOutputStream(out);,2,),DataOutputStream,的写入数据的方法,9.3.2,过滤输出流,表,9-2 DataOutputStream,写入数据方法,方法 描述,write(byte),从字节数组写入数据,write(byte,int,int),从字节数组写入部分数据,writeBoolean(),写入一个布尔变量,writeByte(),写入一个,8,位字节,writeChar(),写入一个,16,位字节,writeChars(),写入一个字符串,writeDouble(),写入,64,位双精度浮点数,writeInt(),写入一个,32,位整数,writeLong(),写入,64,位长整数,writeShort(),写入一个,16,位短整数,writeUTF(),写入一个,UTF,格式的字符串,9.3.2,过滤输出流,【,例,9-8】,采用过滤输出流的方法向文件,jabc.tmp,写入一个整数和一个字符串,并在写入过程中,用,System.out.println,()将操作信息显示出来。,import java.io.*;,public class DataDemo, public static void main (String args),throws IOException, int i=34;,String str=Java filterstream;,out = null;,out = new (jabc.tmp);,DataOutputStream dataOut = null;,dataOut = new DataOutputStream(out);,9.3.2,过滤输出流,if (dataOut!=null), System.out.println(We begin to write sth. to jabc.tmp.);,System.out.println(Write an integer + i);,dataOut.writeInt(i);,System.out.println(Write a string + str);,dataOut.writeBytes(str);,dataOut.close();,out.close();,int r=0;,try r=System.in.read ();,catch (IoException e) ,9.3.2,过滤输出流,9.4 File,类,在,java.io,包中,用,File,类封装了文件对象。,File,类将目录看作是带有路径名的文件对象。通过,File,类可以获取有关文件和目录的信息,并对它们进行操作。但是,,File,类不能进行从文件读取数据或向文件写入数据的操作。,在使用,File,类时,首先要用构造函数创建文件的对象,然后调用,File,类的方法对文件或目录进行,I/O,操作。,9.4.1 File,类的构造函数,File,类提供了三个构造函数,可以用它们中的某一个创建有关对象。,File (String path),:根据路径,path,创建文件对象。,File (String path, String name),:根据路径,path,和文件名,name,创建文件对象。,File (, String name),:根据目录,dir,和文件名,name,创建文件对象。,例如:,= new File(C:microsoftjava);,= new File(C:microsoftjava,);,= new File(java,);,9.4.2 File,类的方法,表,9-3 File,类方法,方法 描述,canRead(),是否是可读文件,canWrite(),是否是可写文件,delete(),删除指定文件,equals(Object),将该对象与指定对象比较,exists(),文件是否存在,getAbsolutePath ),获取文件的绝对路径,getName(),获取文件名,getParent(),获取父目录的名字,getPath(),获取文件的路径,hashCode(),结束文件的散列代码,isAbsolute(),文件是否为绝对文件,isDirectory(),是否为目录,isFile(),是否为文件,lastModified(),返回上次修改时间,length(),返回文件的长度,list(),列出目录中的文件,list(),使用指定过滤器列出目录中的文件,mkdir(),创建目录,mkdirs(),创建该路径下的所有目录,renameTo(File),重命名一个文件,toString(),返回代表文件对象的字符串,9.4 File,类,【,例,9-9】,根据参数“,C:Visual Studio ProjectsProject9-9”,和“,”,创建一个文件对象,并用,File,类的方法获取文件的有关属性。,import java.io.*;,public class,public static void main(String args),File f = new File(c:/Visual Studio Projects/Project9-9,);,System.out.println( is: +f.getName();,System.out.println(Path is: +f.getPath();,System.out.println(f.exists()? exist,:,t exist);,int r=0;,try r = System.in.read();,catch (IOException e) ;,9.4 File,类,思考和练习,9.1,标准输入,/,输出流、一般文件输入,/,输出流和过滤输入,/,输出流分别被封装在哪些包中?,9.2,标准输入,/,输出流有几种标准流?它们是由哪个类管的?,9.3,标准输出流中,,print,()和,println,()有哪些相同点和不同点?,9.4,一般文件输入,/,输出流采用哪两个类?,9.5,如何创建文件输入流?,9.6,如何创建文件输出流?,9.7,编写程序,输入多行字符串,用文件流的方法写入文件,jabc.tmp,中,并从文件中读取数据。,9.8,什么是过滤流?,Java,过滤流包含哪些子类?,9.9,如何将,DataInputStream,和,DataOutputStrean,和其它流(如文件流)连接?,9.10 File,类提供了哪三个构造方法?它们的含义是什么?,9.11 File,类的作用是什么?,思考和练习,5.1,如何定义一个接口?接口起什么作用?,5.2,如何实现一个接口?,5.3,接口继承和类继承有何不同?,5.4,接口中的变量和类中的成员变量有何不同?,5.5,什么是异常?,Java,怎样实现异常处理?,5.6 try-catch,语句和,throw,语句有何区别?,5.7,在什么情况下实现使用,throws,语句?,5.8 JDBC,中有几种异常?如何处理?,5.9,包的作用是什么?如何创建一个包?,5.10 import,的作用是什么?,5.11,定义一个接口,包含一个方法,实现在两个数中求最小值。,5.12,编写类实现,5.11,题定义的接口中的方法。,5.13,编写,Java,应用程序实现对上述方法的调用,并输出最小值。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!