Java程序的对外接口.ppt

上传人:tia****nde 文档编号:12707030 上传时间:2020-05-14 格式:PPT 页数:42 大小:3.08MB
返回 下载 相关 举报
Java程序的对外接口.ppt_第1页
第1页 / 共42页
Java程序的对外接口.ppt_第2页
第2页 / 共42页
Java程序的对外接口.ppt_第3页
第3页 / 共42页
点击查看更多>>
资源描述
第10章Java程序的对外接口输出/输入对象,10.1向Java程序传递参数10.2基本输入输出read()和print()10.3输入输出流与文件10.4文本文件的输入输出10.5文本字符流的I/O10.6bit(字节)流的I/O10.7具有缓冲区的输入输出10.8百里挑一如何选择合适的I/O类10.9小结10.10习题,10.1向Java程序传递参数,10.1.1Java主程序的入口main()方法10.1.2如何在Java程序运行时传递参数10.1.3没有传递参数时的情况,10.1.1Java主程序的入口main()方法,Java程序中出现最多的就是对象,而对象要做事情就要靠调用它的方法。Java中的方法在被调用时是可以接收参数的,这同样也适用于Java的主程序入口main()方法。之前我们所有例子中的main()方法都是这样定义的:publicstaticvoidmain(Stringargv)/Java程序入口主函数,10.1.2如何在Java程序运行时传递参数,先来看下如何在运行Java程序时向它传递参数。其实这很简单,只要我们在运行程序时后面接着写上参数就可以啦。参数与Java的程序名,参数与参数之间都是以空格分隔的。如果一个参数当中包含空格的话,那就需要用双引号将它括起来,防止操作系统把它当作两个参数来对待。在Java的程序中呢,传进来的所有参数都以字符串的形式依次保存main()方法的字符串数组参数当中。里面是一个个的字符串,字符串在数组中的顺序和运行Java程序时输入的顺序一致。我们可以像在普通方法当中使用传入的参数一样使用这个字符串数组中的内容。字符串数组与Java程序运行时输入的参数间对应关系可以用下图来表示。,10.1.3没有传递参数时的情况,我们如果没有输入参数,会是什么结果呢?在这样的情况下字符串数组argv仍然是有定义的,它并不是null。只是它的长度是0,也就是说这个数组里面没有任何元素。我们可以用前面的程序来检验一下,不输入任何参数,看看它输出什么结果。这件事留着读者自己去完成吧!,10.2基本输入输出read()和print(),10.2.1Java的输入System.in.read()10.2.2Java的输出System.out.print(),10.2.1Java的输入System.in.read(),Java也提供给我们一个与输出相对应的输入方法,它就是:System.in.read()它一共有3种参数类型,分别为:System.in.read()System.in.read(byteb)System.in.read(byteb,intoff,intlen)图10.2较详细地描述了当用byte数组来读终端用户输入的信息时,Java程序是取到回车符结束的,所以在第一次读name时,已经将第一次键入的回车符取到程序中了。第二次取字符M时由于我们使用不带任何参数的read()方法,它只取当前一个字符,即M。取回之后终端后面输入的回车符还没有被取到,这就需要在下次读输入字符之前将这两个回车符取出,以妨它们影响后面的读操作。图10.2,10.2.2Java的输出System.out.print(),先来看看语法格式:System.out.print();System.out.println();System.out.write();这个输出的形式与前面讲的输入略有不同,多了两个方法print()和println()。这两个方法可谓是Java中最为神通广大的方法了,它们强大之处在于可以接收任何类型的变量作为参数,输出它们的信息。现在再回过头来看看write()方法,它只有两种形式:write(bytebuf,intoff,intlen);write(intb);,10.3输入输出流与文件,10.3.1Java中流的概念10.3.2Java中的文件类File,10.3.1Java中流的概念,在这里我们不妨以一个简单的程序为例,来让大家从中认识下流的概念。假设我们的程序用来实现一个功能将输入的字符中所有的小写字母转换成大写。那么程序的实现将是下面图10.3所表示的这样一个过程:首先是操作系统将用户由键盘输入的字母及回车转换为一个个的字符,也就是字符流。Java中的输入与输出都是以“流”的形式来实现的。所以Java中的“流”可以按数据的走向分为:输入流与输出流。输入流就是接收用户信息,将得到的输入数据传送给Java程序的“流”;输出流则相反,它将Java程序执行后要输出的结果传递给操作系统,再由操作系统将它们以一定形式输出到指定位置(屏幕或是文件)。图10.3Java中的输入输出流,Java中对文件的操作同终端的输入输出一样,也是通过一组相应的对象来完成的。我们直接使用它们就能完成输入输出的任务。下面的图列出了除基本输入输出之外所有与流有关的类,以及它们之间的继承关系。,10.3.2Java中的文件类File,先来认识下Java中将文件抽象出的类File类吧!Java中的File类是文件系统的抽象,它让我们能够以统一的方式来操作各种不同操作系统平台的文件。File类提供了文件创建,删除,获取并修改文件属性的方法。它们用来使我们得到与此文件相关的信息,在必要的时候可以修改这些信息。遗憾的是,File类并没有为我们提供对文件进行输入输出操作的方法,这要待到下一节中用其它的类来做到。,先来看看File类为我们提供了哪些方法吧,请看表:,10.4文本文件的输入输出,10.4.1使用FileReader对象读取数据10.4.2使用FileWriter对象写数据10.4.3文本文件输入输出实例,10.4.1使用FileReader对象读取数据,程序从文件中读取数据,需要通过以下3步来完成:(1)创建相应的输入对象,使其连接到要进行读操作的文件。(2)从文件中读取所需的数据内容。(3)关闭读操作结束的文件。,在这一节中先来给大家介绍其中的一种,就是使用Java中的FileReader对象来达到目的。其它的放在后面再向大家介绍,我们一种一种的学习,这样会让大家更有条理地逐步学习Java的输入输出。既然确定这里是用FileReader对象来从文本文件中读数据,下面自然就是向大家介绍Java中的FileReader类啦!下表所示是FileReader类中的方法,10.4.2使用FileWriter对象写数据,同从文件中读信息一样,在向文件输出文本内容时也需要分3步:(1)创建相应的输出文件对象,使其连接到要进行写入操作的文件。(2)向文件中写入输出的数据内容。(3)关闭写操作结束的文件。,下面来看看Java中写入文本文件的类FileWriter吧。这次我们给大家介绍的FileWriter类中的常用方法都总结在下面的下表中啦。,10.4.3文本文件输入输出实例,在下面这个小程序中,我们通过对文件的输入输出来实现文本文件的复制功能。如果只是文件的复制,有点儿过于简单啦,在复制的过程中,我们还作了大小写的转换,将原文件中的字母全改成了大写。原文件我们在程序中写的名字是_java.txt,当然了,有兴趣的同学可以改造下面的程序,将它改为复制的文件名由参数读入,那就可以使用一个程序来复制不同的文本文件了。这个工作留给同学们自己来完成吧。,10.5文本字符流的I/O,10.5.1使用Scanner对象读取数据10.5.2使用PrintWriter对象写数据10.5.3重定向与文本I/O实例,10.5.1使用Scanner对象读取数据,曾经给大家提过从终端输入的内容都是以文本形式传递到我们的Java程序中的,这就给我们带来了一个问题:如果想从终端输入数字,当如何操作?Java为我们提供了具有这个功能的类Scanner类。,同前面介绍的输入方法不同的是,Scanner类中的方法还具有类型转换的功能。它能够将输入的字符串转换为它们对应的类型值,而且字符串的来源不必是输入的信息,也可以是程序中定义的字符串哦!通过Scanner类中的各种方法,我们可以轻松得到终端输入的各种类型值。先通过图来了解一下Scanner类的功能吧。图中已经给大家标出了Scanner类在Java类库中的位置java.util.Scanner。,10.5.2使用PrintWriter对象写数据,Scanner对象是用来输入的,大家肯定也期许Java会提供具备类型转换功能的输出对象,它不但能够输出文本到屏幕,文件,还能够像println()方法那样将其它类型的变量转换为字符串的形式输出。Java并没有在这件事上令我们失望,PrintWriter类中就提供了具有这些功能的方法。PrintWriter对象不但提供我们将其它类型变量值转换为字符串的功能,而且它还支持带格式的转换呢!PrintWriter类中的format()方法所使用的格式控制字符同String类中的format()方法所用的是完全相同的。,下面我们在下表中给大家列出了PrintWriter类当中常用的一些方法,大家先认识下它们都长什么样子:,10.5.3重定向与文本I/O实例,现在就来给大家介绍下操作系统所提供的类似功能重定向。不论Windows还是Linux系统,它们都具备I/O重定向的功能,而且它们的重定向语法格式是相同的。现在来给大家看看操作系统的重定向功能是如何使用的吧!下面表10.6中给大家总结出了重定向所用的符号以及它们的语法格式和含义:表10.6,10.6bit(字节)流的I/O,10.6.1以字节的形式文本输出10.6.2使用FileOutputStream和DataOutputStream对象写数据10.6.3使用FileInputStream和DataInputStream对象读数据,10.6.1以字节的形式文本输出,前面介绍的文本I/O类都是以字符为基本I/O单位的,也就是一个Character(在Java中是16bit,即2字节)作为一个基本的读写单位。最小不会再小于这个单位,即所有的文本文件长度肯定是2字节的整数倍。而这次给大家介绍的这个PrintStream类则是以字节(8bit)为单位进行的。所以称之为以字节形式的文本输出。既然也是一种文本的输出,它自然和前面介绍的PrintWriter类中的方法也是极为相似。下面表10.7列出了PrintStream类当中的常用方法。大家可以看到这和PrintWriter类中的方法几乎是完全一样哦!而且在输出的效果上,也是相同的呢。当然了,它和PrintWriter类还是有所区别的,主要是它以字节为基本的输出单位。,如表10.7所示是PrintStream类中的方法表10.7,10.6.2使用FileOutputStream和DataOutputStream对象写数据,这一小节来给大家介绍真正的二进制输出的两个类FileOutputStream和DataOutputStream。这一小节介绍的两个类的确是用来输出二进制到指定的文件当中哦。其中FileOutputStream类里面只是有几个简单的二进制输入方法,完成将以字节为单位的二进制数据直接写入到文件中去的工作。而DataOutputStream类中提供的方法功能较为全面,它能够以二进制形式将基本类型变量的值写入到指定文件中。,我们将Unicode编码以及前面3种字符输出方法的编码形式都列在了下图当中,里面最左边一列是字符对应的Unicode编码,右边的3列分别是各个输出方法往文件中写入的编码内容。,10.6.3使用FileInputStream和DataInputStream对象读数据,文件只是起保存数据的作用,如果之后无法再读出里面的数据,保存也就变得毫无意义了。这一小节我们来学的内容就是从之前保存的二进制文件当中再将原来存放的数据读出来。对于前面介绍的文本信息,如果读与写的编码方式不同,会产生乱码的现象。二进制的数据与文本内容相同,如果写入与读出的数据类型不同,读出的数值就是错误的,自然也就没有任何实际意义。所以大家会发现二进制的读取方法是与写入的方法相对应的。先来看一个比较简单的FileInputStream类吧,下表就是FileInputStream类中的方法,下面就一起来看下类DataInputStream中都有哪些方法吧!下表就是DataInputStream类中的方法。,10.7具有缓冲区的输入输出,10.7.1为什么要有缓冲区10.7.2带缓冲区的输入类BufferedReader和BufferedInputStream10.7.3带缓冲区的输出类BufferedWriter和BufferedOutputStream,10.7.1为什么要有缓冲区,这个缓冲区是指的Java程序中的缓冲区。并不代表前面所介绍的I/O都不存在任何形式的缓冲,而是指它们在Java程序中并没有缓冲区。图10.10所表示的是带缓冲区的I/O操作过程。在带缓冲区的I/O中,所有的I/O操作都是通过缓冲区来完成的,而且我们只能够在缓冲区中直接进行I/O。如果缓冲区中没有要读取的数据,则程序会自动从输入设备继续读取。同样,缓冲区中的输出数据累积到一定数量,程序会自动将它们输出到指定的文件或设备。图10.10,10.7.2带缓冲区的输入类BufferedReader和BufferedInputStream,由于大家之前已经见过很多个Java当中用作I/O的类了,这一小节以及下面一小节里我们分别给大家介绍两个类。这一小节中我们介绍用于输入的两个类BufferedReader和BufferedInputStream。表10.12和表10.13当中分别列出了这两个类中的常用方法。,如下表所示就是BufferedReader类中的方法,10.7.3带缓冲区的输出类BufferedWriter和BufferedOutputStream,带缓冲区的输出类这两个类分别用来输出文本字符和二进制数据到指定的位置,并不一定是文件哦,它还能够将文本输出到屏幕上。,下表10.15所示就是BufferedOutputStream类中的方法,10.8百里挑一如何选择合适的I/O类,下面我们就来给大家列个表,把它们的特性都总结一下。在下面的表中,有些英文缩写需要首先给大家作个解释:,下表就是JavaI/O类列表,10.9小结,本章的内容虽然很多,但总结起来用4个字足以概括,那就是“输入输出”或者是“I/O”。如果我们想写出实用的程序,就必须让它能够对外有数据交互功能,至少要把程序运行的结果输出来。,10.10习题,【习题1】Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?【习题2】BufferedReader的父类是以下哪个?()A.FilterReaderB.InputStreamReaderC.PipedReaderD.Reader【习题3】在进行重定向之后,会对输入与输出产生什么影响?,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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