Java程序设计-07输入输出流.ppt

上传人:wuy****n92 文档编号:80473256 上传时间:2023-03-23 格式:PPT 页数:28 大小:614KB
返回 下载 相关 举报
Java程序设计-07输入输出流.ppt_第1页
第1页 / 共28页
Java程序设计-07输入输出流.ppt_第2页
第2页 / 共28页
点击查看更多>>
资源描述

《Java程序设计-07输入输出流.ppt》由会员分享,可在线阅读,更多相关《Java程序设计-07输入输出流.ppt(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、计算机科学与技术学院赵志崑JavaJava程序设计程序设计赵志崑JavaJava程序的输入输出程序的输入输出以一个小应用为例,介绍Java的输入输出机制。小应用需求分析需要实现的功能点Java中的实现方法具体代码总结与扩展赵志崑随机点名器随机点名器功能:设计开发一个Java程序,每节课可以随机抽取几名同学点名,达到随机点名的目的。数据来源:教务系统提供的学生名单(文本文件)Java程序显示到屏幕保存到文件随机选出10个学生赵志崑程序流程与要点程序流程与要点文本文件屏幕打印学生名单(内存)选中名单(内存)随机选择1读文件2存数据3随机选4写文件学生名单选中名单选中名单文本文件随机点名器赵志崑要点

2、一:读文件要点一:读文件Java中文件以流(Stream)的方式读写,将程序的输入输出看作是数据的流动,一个流是一个字节的序列。流的使用不局限于文件读写,还可用于网络传输、键盘输入、屏幕输出等和程序输入输出有关的一切活动。根据用途,Java中提供了几十种流,类库中为每一种流提供一个类,用于创建流(对象)。赵志崑读文件流读文件流用于读文本文件内容的流是FileReader,主要方法:FileReader(String filename):构造函数,创建流。int read():读一个字节,若读到文件结尾返回-1。void close():关闭流。FileReader fr=new FileRea

3、der(“Students.txt”);int d=fr.read();fr.close();FileReader20-1赵志崑学生数据读入学生数据读入从文件students.txt中读入学生数据。/Selector.javaimport java.io.*;public class Selector public static void main(String args)throws ExceptionFileReader fr=new FileReader(Students.txt);int c=fr.read();while(c!=-1)System.out.print(char)c);

4、c=fr.read();fr.close();说明:文件Students.txt必须放在同一个目录下。必须在主函数声明处加入“throws Exception”将异常全部交给虚拟机处理 以字符为单位处理数据?赵志崑按行读取按行读取BufferedReader类能实现按行读取的功能,主要方法:BufferedReader(Reader reader):构造函数,创建流。String readLine():读一行字符,若读到文件结尾返回null。void close():关闭流。BufferedReaderFileReader 字符 字符串 20080854101 伦永涛 2008计算机科学与技术

5、1 BufferedReader br=new BufferedReader(fr);String s=br.readLine();br.close();null赵志崑按行读取数据的代码按行读取数据的代码按行读取学生数据的代码如下:/Selector.javaimport java.io.*;public class Selector public static void main(String args)throws Exception FileReader fr=new FileReader(Students.txt);BufferedReader br=new BufferedReade

6、r(fr);String s=br.readLine();while(s!=null)System.out.println(s);s=br.readLine();br.close();fr.close();BufferedReaderFileReader文件流的嵌套赵志崑要点二:数据存放要点二:数据存放从文件读入的数据是一个个字符串,如何在程序中存放?20080854101 伦永涛 20080854102 王楚尧 20080854103 李燕 用数组来保存批量数据 创建一个字符串数组,将读入的数据依次放入 用一个整数型变量记录数据个数,并作为空闲位置的指针 String students=ne

7、w String100;int count=0;studentscount=s;count+;012349899students0count1 2 3赵志崑数据存放的代码数据存放的代码加入数据存放后的代码如下:/Selector.javaimport java.io.*;public class Selector public static void main(String args)throws Exception String students=new String100;int count=0;FileReader fr=new FileReader(Students.txt);Buff

8、eredReader br=new BufferedReader(fr);String s=br.readLine();while(s!=null)studentscount=s;count+;s=br.readLine();br.close();fr.close();赵志崑要点三:随机选取要点三:随机选取学生信息存放在数组中,对应下标为0到count-1。如何从中随机选出1个?(产生一个0到count-1的随机整数)可能会有重复选择?Java提供Random类来创建随机数对象,方法包括:Random():构造函数,创建随机数对象,初始值为当前时间。nextInt(int n):产生一个0到n

9、之间的随机整数。要选出几个,就循环调用几次。Random rand=new Random();int n=rand.nextInt(count);20080854101 伦永涛 20080854102 王楚尧 20080854103 李燕 012349899students78count20080854104 董风华 20080854105 李晶?nrandRandom的实现利用了混沌函数:Xn+1=f(Xn),Xn+1和Xn之间几乎没有任何规律;X0为对象创建时的系统时钟值(从1970年1月1日0时0分0秒到当前经过的毫秒数)。赵志崑避免重复选择避免重复选择避免重复选择:将选中过的学生数据从

10、数组中删除20080854101 伦永涛 20080854102 王楚尧 20080854103 李燕 012349899students79count20080854104 董风华 20080854105 李晶 77787920080854239 秦露 20080854240 王萍 3nrand 用最后一名学生替换选中的学生,总数量减1studentsn=studentscount-1;count-;78赵志崑要点四:结果存入文件要点四:结果存入文件将选中学生的名单保存到文件selected.txt中。向文件中写入字符用的流是FileWriter,相关方法是:FileWriter(Strin

11、g filename):构造函数,创建文件输出流。write(String s,int start,int end):将字符串s中第start个字符到第end个字符写入文件。close():关闭流,保证文件内容写入磁盘。FileWriterFileWriter fw=new FileWriter(Selected.txt);fw.write(line,0,line.length();fw.close();要换行,只需要写入一个”rn”字符串20080854219 徐飞飞 2008计算机科学与技术220080854201 张慧丽 2008计算机科学与技术2赵志崑写文件的代码写文件的代码将结果写入

12、文件的代码如下:Random rand=new Random();int selectCount=10;FileWriter fw=new FileWriter(Selected.txt);for(int i=0;i 0)selectedCount=Integer.parseInt(args0);赵志崑改进改进3 3分切数据字段分切数据字段问题:对输入的字符串没有进行分析,所以很多操作无法进行,如按姓名排序、按班级抽取等;解决方法:读入数据时,对各字段进行解析,各字段分别存放;输出时再将这些字段组合成字符串。赵志崑StudentStudent类类为了保存格式化的数据定义Student类:cla

13、ss Student private String id;/学号private String name;/姓名private String department;/学院public void parseStudent(String str)/字符串解析public String toString()/生成字符串数据保存在Student类型的对象数组中:Student students=new Student100;数据读入时格式化:Studentstudent=new Student();student.parseStudent(line);studentscount=student;coun

14、t+;数据输出:line=studentsj.toString();赵志崑设计设计parseStudentparseStudent方法方法主要使用了字符串处理中的切词类StringTokenizer,该类提供的方法可以根据空格符将字符串分切成多个词。public void parseStudent(String str)int tokenCount;StringTokenizer t=new StringTokenizer(str);tokenCount=t.countTokens();id=t.nextToken();/学号name=t.nextToken();/姓名department=t

15、.nextToken();/班级赵志崑设计设计toStringtoString方法方法主要输出三个字段:学号、姓名和班级。学号的长度都一致。姓名的长度不一致,有两个字有三个字,会对后面的班级字段的起始位置产生影响。因此,加入姓名后,采用了一条对齐语句。public String toString()String s=id+name;for(int l=s.length();l 21;l+)s+=“”;/对齐,引号中为两个空格return s+department;赵志崑实验作业实验作业文本文件读写将students.txt中数据全部读入内存数组;将学生排序全部反转,即第一位变成最后一位,最后一位变为第一位;将结果保存到另一个文件中;students.txt文件从文件交换处下载。赵志崑后续完善后续完善随机点名器程序将贯穿本课程后面的学习随机点名器异常处理数据结构图形界面网络传输序列化事件处理多线程数据库赵志崑感谢感谢!本课程全部ppt和源代码可以从“网上课堂”下载

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

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁