Java程序设计应用开发教程 课件 6.2 输入输出流_第1页
Java程序设计应用开发教程 课件 6.2 输入输出流_第2页
Java程序设计应用开发教程 课件 6.2 输入输出流_第3页
Java程序设计应用开发教程 课件 6.2 输入输出流_第4页
Java程序设计应用开发教程 课件 6.2 输入输出流_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单元6

输入输出流与异常处理6.2输入输出流程序设计

任务6.2.1使用文件模板读取成品数据任务描述入库管理就是仓库管理员针对生产管理系统(MES)中的成品物料数据入库RFID自动出货管理系统的操作。成品数据以文件模板形式导出MES系统中的数据,此处的文件模板以文本文件为例,本单元任务就是将文件模板形式的数据写入RFID自动出货管理系统,如图6-2所示。在成品实物进入仓库时使用RFID读/写器读取LP号码信息,根据读取LP号码信息与文件模板中数据的LP号码信息判断是否一致,来确定该数据是否可以写入RFID自动出货管理系统。此处RFID读/写器读取LP号码信息功能可通过键盘来完成。图6-2使用文件模板读取成品数据

任务6.2.2使用对象序列保存出货清单任务描述出库管理就是成品从仓库发货到提货车辆的管理。根据计划出货需求,仓库管理员从RFID自动出货管理系统中选择需要出货的信息,生成出货清单,该出货清单要保留完整记录并且可追溯。对象的序列化主要有两种用途:一种是把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;另一种是在网络上传送对象的字节序列。本单元任务是使用对象序列保存出货清单,如图6.3所示。图6-3使用对象序列保存出货清单知识目标了解输入/输出流的定义与常用方法。理解File类的常用方法及其说明。熟悉文件输入/输出流的概念。熟悉缓冲输入/输出流的概念。熟悉数据输入/输出流的概念。能力目标能够使用File类。能够使用字节流和字符流。能够使用文件、缓冲输入/输出流。能够使用数据输入/输出流。能够使用输入输出流读取写入数据,解决实际问题。素养目标培养严于律己、宽以待人的处事原则。培养规范编程习惯,做事细心、严谨的工匠精神。任务6.2使用文件模板读取成品数据输入输出是应用程序与外部设备及其计算机进行数据交流的操作,如读写硬盘数据、向显示器输出数据、通过网络读取其他节点的数据。读取数据内存内存数据写入

相关知识输入输出流概述所谓流是同一台计算机或网络中不同计算机之间有序运动的数据序列。Java中数据输入输出是以使用流(Stream)的形式执行的,借助于输入输出类库java.io包中的类与接口实现的。输入流抽象类有两种:InputStream字节输入流和Reader字符输入流。输入流InputStream类的常用方法及说明方法返回值说明read()int从输入流中读取数据的下一个字节。返回0~255范围内的int字节值。如果已经到达流末尾而没有可用的字节,则返回-1read(byte[]b)int从输入流读入一定长度的字节,并以整数的形式返回字节数。mark(intreadlimit)void从输入流的当前位置放置一个标记,readlimit参数告知此输入流在标记位置失效之前允许读取的字节数reset()void将输入指针返回到当前所做的标记处skip(longn)long跳过输入流上的n个字节并返回实际跳过的字节数markSupported()boolean如果当前流支持mark()/reset()操作就返回Trueclose()void关闭输入流并释放与该流关联的所有系统资源Reader类的常用方法

Reader类的方法与InputStream类的方法类似。但是Reader类的read()方法的参数为char类型的数组。Reader类还提供了一个ready()方法,用来判断是否准备读取流,其返回值为boolean类型。输出流输出流是指从计算机流向外部设备的数据序列,用于写出数据,但是不能读取。输出流的作用是从程序外部向内部写入数据。输出流抽象类有两种:OutputStream字节输出流和Write字符输出流。输出流方法说明write(intb)将指定的字节写入此输出流write(byte[]b)将b个字节从指定的byte数组写入此输出流。write(byte[]b,intoff,intlen)将指定的byte数组中从偏移量off开始的len个字节写入此输出流。flush()彻底完成输出并清空缓冲区close()关闭输出流OutputStream类的常用方法及说明输出流Writer类的常用方法方法说明append(charc)将指定字符添加到此输出流append(CharSequencecsq)将指定字符序列添加到此输出流append(CharSequencecsq,intstart,intend)将指定字符序列的子序列添加到此Writer.Appendableclose()关闭输出流,但要先刷新它flush()刷新该输出流的缓冲write(char[]cbuf)写入字符数组write(char[]cbuf,intoff,intlen)写入字符数组的某一部分write(charc)写入单个字符write(Stringstr)写入字符串write(Stringstr,intoff,intlen)写入字符串的某一部分File类File类是java.io包中用来操作文件的类,通过调用File类中的方法,可实现创建、删除、重命名文件等功能。使用File类的对象可以获取文件的基本信息,如文件所在的目录、文件名、文件大小、文件的修改时间等。

使用File类的构造方法能够创建文件对象。构造方法说明publicFile(Stringpath)创建一个File对象,指向path所表示的文件或目录。publicFile(Filedir,Stringname)创建一个File对象,指向dir指定的目录下文件名为namepublicFile(Stringpath,Stringname)创建一个File对象,指向path路径下的name文件File类的构造方法File类:文件操作的常用方法方法说明publicbooleancanRead()判断File对象对应的路径是否可读。publicbooleancanWrite()判断File对象对应的路径是否可写publicbooleanexists()判断File对象对应的路径是否存在。publicStringgetAbsolutePath()获取File对象对应路径的绝对路径。publicStringgetParent()获取File对象对应路径的目录。publicStringgetPath()获取File对象对应的路径。publicbooleanisAbsolute()判断File对象对应的路径是否为绝对路径publicStringgetName()获取File对象对应路径的文件名publicbooleanDelete()删除指定的文件或文件夹。publicbooleanisFile()判断File对象对应的路径是否为文件publicbooleanisHidden()判断File对象对应的文件是否为隐藏属性publiclonglength()获得File对象对应文件的长度publiclonglastModified()获得File对象对应文件的最近修改时间publicbooleanrenameTo(Filedest)更改File对象对应文件的文件名File类:文件夹操作的常用方法方法说明publicbooleanisDirectory()判断File对象对应的路径是否为目录。publicbooleanDelete()删除指定的文件或文件夹。publicbooleanexists()判断File对象对应的路径是否存在。publicStringgetAbsolutePath()获取File对象对应路径的绝对路径。publicStringgetParent()获取File对象对应路径的目录。publicStringgetPath()获取File对象对应的路径。publicStringgetName()获取File对象对应路径的文件名publicString[]list()返回字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。publicFile[]listFile()返回抽象路径名数组,这些路径名表示此抽象路径名的表示的目录中的文件publicbooleanmkdir()创建此抽象路径名指定的目录。publicbooleanmkdirs()创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。publicbooleansetReadOnly()将文件或文件夹设置为只读File类//3.向source.txt文件中写入李白的《静夜思》PrintWriterout=newPrintWriter(sFile);out.println("床前明月光,\r\n疑是地上霜,\r\n举头望明月,\r\n低头思故乡。");out.flush();out.close();在C盘新建一个文件夹,文件夹名为24061201刘菲,在其文件夹中再新建文件,文件名为source.txt,向其中写入李白的《静夜思》。//1.创建文件夹Filefdir=newFile("C:\\24061201刘菲");if(fdir.mkdir()){System.out.println("成功在C盘创建个人文件夹");}//2.创建一个文件FilesFile=newFile(fdir,"source.txt");if(sFile.createNewFile()){ System.out.println("成功在个人文件夹创建文件");}FileInputStream类FileInputStream是文件的字节输入流,从文件系统中的某个文件中获得输入字节,使用该留可以字节为单位从文件中读取数据。FileInputStream类提供的常用构造方法:FileInputStream类提供的常用方法:

publicFileInputStream(Filefile);创建一个从指定File对象表示的文件中读取数据的文件输入流。publicFileInputStream(Stringname);创建用于读取给定的文件系统中路径名name所指定的文件的文件输入流。方法说明publicintread()从此输入流中读取一个数据字节publicintread(byte[]b)从此输入流中将b.length个字节的数据读入到一个byte数组中publicintread(byte[]b,intoff,intlen)从此输入流中将len个字节的数据读入到一个byte数组中。off:目标数组b中的起始偏移量。

FileOutputStream类FileOutputStream是文件的字节输出流,文件输出流是以字节为单位将数据写入到文件中。FileOutputStream其提供的常用构造方法:publicFileOutputStream(Filefile);创建一个向指定File对象表示的文件中写入数据的文件输出流。publicFileOutputStream(Filefile,booleanappend);创建一个向指定File对象表示的文件中写入数据的文件输出流。如果第二个参数为true,则将字节写入文件末尾处,而不是写入文件开始处。publicFileOutputStream(Stringname);创建一个向具有指定名称的文件中写入数据的输出文件流。publicFileOutputStream(Stringname,booleanappend);创建一个向具有指定name的文件中写入数据的输出文件流。如果第二个参数为true,则将字节写入文件末尾处,而不是写入文件开始处。FileOutputStream其提供的常用方法方法说明publicvoidwrite(intb)向文件中写入一个字节大小的数据public

void

write(byte[]b)将b.length个字节从指定byte数组写入此文件输出流中public

void

write(byte[]b,intoff,intlen)将指定byte数组中从偏移量off开始的len字节写入此文件输出流。FileReader类FileReader类是文件的字符输入流类,读取文件内容,以字符为单位从文件中读取数据。FileReader类的构造方法:publicFileReader(StringfileName);//使用带有指定文件的String参数的构造方法。创建该输入流对象,并关联源文件。

如:FileReaderfr=newFileReader(StringfileName);FileReader类的常用方法方法说明publicintread()读取单个字符。返回作为整数读取的字符,如果已达到流末尾,则返回-1。publicintread(char[]cbuf)将字符读入数组。返回读取的字符数。如果已经到达尾部,则返回-1。publicvoidclose()关闭此流对象。释放与之关联的所有资源。FileWriter类FileWriter类是文件的字符输出流类,是以字符为单位将数据写入文件中。FileWriter类的构造方法:publicFileWriter(StringfileName);//创建字符输出流类对象和已存在的文件相关联。文件不存在的话,并创建。publicFileWriter(StringfileName,booleanappend);//创建字符输出流类对象和已存在的文件相关联,并设置该该流对文件的操作是否为续写。FileWriter类的常用方法方法说明publicvoidwrite(Stringstr)写入字符串。当执行完此方法后,字符数据还并没有写入到目的文件中去。此时字符数据会保存在缓冲区中。publicviodflush()刷新该流中的缓冲。将缓冲区中的字符数据保存到目的文件中去。publicviodclose()关闭此流。在关闭前会先刷新此流的缓冲区。在关闭后,再写入或者刷新的话,会抛IOException异常。文件读/写操作在Java中,系统提供了FileInputStream类与FileOutputStream类以字节形式从文件中读取数据,以及向文件中写入数据。FileReader与FileWriter类以字符形式从文件中读取数据,以及向文件中写入数据。Java中对文件的读操作:创建文件输入流对象,此时文件自动打开或创建;用文件读方法实现读数据关闭输入流,同时关闭文件。Java中对文件的写操作:创建文件输出流对象,此时文件自动打开或创建;用文件写方法实现写数据关闭输出流,同时关闭文件。示例:字符串写入文本文件从字符串content写入MyText.txt,使用File对象表示文件,以FileWriter、BufferedWriter来提高写入效率。Stringcontent[]={"床前明月光,","疑是地上霜。","举头望明月,","低头思故乡。"

};Filefile=newFile("MyText.txt");try{FileWriterfw=newFileWriter(file);BufferedWriterbufw=newBufferedWriter(fw);

for(inti=0;i<content.length;i++){//循环遍历数组bufw.write(content[i]);//将字符串数组中元素写入到磁盘文件中bufw.newLine();//将数组中的单个元素以单行的形式写入文件

}bufw.close();//将BufferedWriter流关闭fw.close();//将FileWriter流关闭}catch(IOExceptione){//处理异常e.printStackTrace();}示例:读取文本文件从文本文件MyText.txt读取数据,使用File对象表示文件,以FileReader来执行实际的读取,并用BufferedReader来读取提高效率。读取是以while循环来执行进行,一直到readLine()结果为null为止。FilemyFile=newFile("D:\\MyText.txt");try{ FileReaderfileReader=newFileReader(myFile); BufferedReaderbuffered=newBufferedReader(fileReader); Stringline=null; while((line=buffered.readLine())!=null){ System.out.println(line); } buffered.close();}catch(IOExceptione){ e.printStackTrace();}数据输入/输出流DataInputStream类是数据输入流,DataOutputStream类是数据输出流,它们提供了与平台无关的操作数据流。DataInputStream类是允许应用程序从底层输入流中读取基本Java数据类型。因此DataInputStream类与DataOutputStream类读写二进制数据。DataInputStream类常用方法方法说明intread(byte[]b)从包含的输入流中读取一定数量的字节,并将它们存储到缓冲区数组b中intread(byte[]b,intoff,intlen)从包含的输入流中将最多len个字节读入一个byte数组中publicStringreadUTF()读取使用UTF-8编码的Unicode字符串,并返回一个String值publicintreadInt()读取四个输入字节并返回一个int值publicdoublereadDouble()读取八个输入字节并返回一个double值publicBooleanreadBoolean()读取一个输入字节,如果该字节不是零,则返回true,如果是零,则返回falsepublicStringreadChars()读取两个输入字节并返回一个char值数据输入/输出流DataOutputStream类常用方法方法说明voidwrite(intb)将int类型的b写到数据输出流中voidread(byte[]b,intoff,intlen)将字节数组b中off位置开始,len个长度写到数据输出流中publicvoidwriteUTF(Stringstr)以机器无关的方式使用utf-8编码方式将字符串写到基础输出流中publicvoidwriteInt(intv)将一个int类型的数据写到数据输出流中,底层将4个字节写到基础输出流中publicvoidwriteDouble(doublev)将一个double类型的数据写到数据输出流中,底层会将double转换成long类型,写到基础输出流中publicvoidwriteBoolean()将布尔类型的数据写到数据输出流中,底层是转化成一个字节写到基础输出流中publicvoidwriteChars(Strings)将字符串按照字符顺序写到基础输出流中数据输入与输出流写入文件操作StringoutSno="2017011123";StringoutSname="汪馨";intoutSage=18,inSage;FileOutputStreamfos=newFileOutputStream(“student.txt”);BufferedOutputStreambos=newBufferedOutputStream(fos);DataOutputStreamdos=newDataOutputStream(bos);dos.writeUTF(outSno);dos.writeUTF(outSname); dos.writeInt(outSage);dos.close();bos.close();数据初始化12创建FileOutputStream创建BufferedOutputStream35创建DataOutputStream46写入基本数据类型关闭DataOutputStream关闭BufferedOutputStream数据输入与输出流读取文件操作StringinSno;StringinSname;intinSage;FileInputStreamfis=newFileInputStream(“student.txt”);BufferedInputStreambis=newBufferedInputStream(fis);DataInputStreamdis=newDataInputStream(bis);inSno=dis.readUTF();inSname=dis.readUTF();inSage=dis.readInt();dis.close();bis.close();变量初始化12创建FileInputStream创建BufferedInputStream35创建DataInputStream46读取数据关闭DataInputStream关闭BufferedInputStream案例:学生信息的存取操作使用数据输入输出流实现学生信息的存取操作。定义变量用来保存学号、姓名、性别、年龄,成绩,是否统招,将若干个学生对象写入student.dat文件中,然后将这些信息从文件中读取并显示在控制台上对象输入与输出流在Java中提供有ObjectInputStream与ObjectOutputStream两个类用于序列化对象的操作。所谓对象序列化是指在内存之中保存的对象转化为二进制数据流形式的一种操作。通过将对象序列化,可以方便实现对象的传输与保存。在Java中并不是所有的类的对象都可以被序列化,如果一个类的对象需要序列化,则此类一定要实现Java.io.Serializable接口。Java.io.Serializable接口里面没有定义任何的方法,此接口属于标识接口表示一种能力。对象输入与输出流publicfinalObjectreadObject()throwsIOException,ClassNotFoundExceptionObjectInputStream类的常用方法使用ObjectInputStream读取对象时,InputStream中出现问题或者遇到不可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论