JAVA输入输出及数据库操作.ppt_第1页
JAVA输入输出及数据库操作.ppt_第2页
JAVA输入输出及数据库操作.ppt_第3页
JAVA输入输出及数据库操作.ppt_第4页
JAVA输入输出及数据库操作.ppt_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

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

文档简介

第7章输入输出及数据库操作,7.1输入和输出7.2数据库操作,7.1输入和输出,7.1.1流的含义7.1.2流的层次结构7.1.3标准输入输出7.1.4File类7.1.5FileInputStream类和FileOutputStream类7.1.6DataInputStream类和DataOutputStream类7.1.7随机访问文件7.1.8Reader类和Writer类7.1.9IOException类的几个子类,7.1.1流的含义,流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样,如下图7-1:,图7-1流,7.1.1流的含义,数据流是指一组有顺序的、有起点的和终点的字节集合Java将读取数据的对象称为输入流;能向其写入数据的对象称为输出流。字节流,被称作输入流(Inputstream)或输出流(Outputstream),基于数据的I/O是二进制(比如说表示图像的位图)字符流,被称作Reader或Writer,基于文本的I/O都是一些人们能够阅读的字符(比如说程序的源代码,字符流,7.1.1流的含义,InputStream,OutputStream,Reader,Writer是四个抽象类。Java中其他多种多样变化的流均是由它们派生出来的。在这四个抽象类中,InputStream和Reader定义了完全相同的接口:intread()intread(charcbuf)intread(charcbuf,intoffset,intlength)而OutputStream和Writer也是如此:intwrite(intc)intwrite(charcbuf)intwrite(charcbuf,intoffset,intlength),7.1.2流的层次结构,InputStream和OutputStream流层次结构如图7-2和图7-3所示Reader和Writer流层次结构如图7-4和图7-5所示,图7-2InputStream输入流层次结构,图7-3OutputStream输出流层次结构,图7-4Reader流层次结构,Reader,图7-5Writer流层次结构,Writer,7.1.3标准输入输出,标准输入输出都是System类中定义的类成员变量,包括:System.in:代表标准输入流,默认状态对应于键盘输入。System.out:代表标准输出流,默认状态对应于屏幕输出。System.err:代表标准错误输出流,默认状态对应于屏幕输出。,【实例7-1】importjava.io.*;classstdIOExample1publicstaticvoidmain(Stringargs)throwsIOExceptionintch;intcount=0;System.out.println(请输入字符(当输入0时退出!));while(char)(ch=System.in.read()!=0)/输入字符count+;System.out.print(char)ch);/输出字符System.out.println();System.err.println(counted+count+totalbytes.);说明:在本实例中,利用System.in.read()不断从键盘输入字符,并在显示屏输出,count用于累计输入字符个数,当输入字符为0时,输入终止。,7.1.4File类,含义:File类与InputStream/OutputStream类同属于一个包,它不允许访问文件内容。File类主要用于命名文件、查询文件属性和处理文件目录。1File类的构造方法publicFile(Stringname):指定与File对象关联的文件或目录的名称,name可以包含路径信息及文件或目录名。例如:FilemyFile;MyFile=newFile(“D:WUabc.txt”),7.1.4File类,1File类的构造方法publicFile(StringpathName,Stringname):使用参数pathName(绝对路径或相对路径)来定位参数name所指定的文件或目录。例如:FilemyFile;MyFile=newFile(“D:WU”,“abc.txt”);,7.1.4File类,1File类的构造方法publicFile(Filedirectory,Stringname):使用现有的File对象directory(绝对路径或相对路径)来定位参数name所指定的文件或目录。例如:FilemyDir=newFile(“D:WU”);MyFile=newFile(myDir,“abc.txt”);publicFile(URIrui):使用给定的同一资源定位符来定位文件。,7.1.4File类,2File类常见方法StringgetName();得到一个文件的名称(不包括路径)StringgetPath();得到一个文件的路径名StringgetAbsolutePath();得到一个文件的绝对路径名StringgetParent();得到一个文件的上一级目录名StringrenameTo(FilenewName);将当前文件名更名为给定文件的完整路径booleanexists();测试当前File对象所指示的文件是否存在booleancanWrite();测试当前文件是否可写booleancanRead();测试当前文件是否可读,7.1.4File类,2File类常见方法booleanisFile();测试当前文件是否是文件(不是目录)booleanisDirectory();测试当前文件是否是目录longlastModified();得到文件最近一次修改的时间longlength();得到文件的长度,以字节为单位booleandelete();删除当前文件booleanmkdir();根据当前对象生成一个由该对象指定的路径Stringlist();列出当前目录下的文件,【实例7-3】importjava.io.*;publicclassfileTestvoidlistAttributes(StringfileName)Filef=newFile(fileName);if(f.exists()System.out.println(Attributesof+fileName);System.out.println(Exist:+f.exists();System.out.println(Canread:+f.canRead();System.out.println(Canwrite:+f.canWrite();System.out.println(Isfile:+f.isFile();System.out.println(Isdirector:+f.isDirectory();System.out.println(Isabsolutepath:+f.isAbsolute();elseSystem.out.println(fileName+doesnotexist!);,【实例7-3】publicstaticvoidmain(Stringargs)if(args.length!=1)System.out.println(Usage:javafileTest);System.exit(1);fileTestobj=newfileTest();obj.listAttributes(args0);,编译完毕后,按照如下方式运行:g:java01javafileTestfileTest.java则得到如下结果:AttributesoffileTest.javaExist:trueCanread:trueCanwrite:trueIsfile:trueIsdirector:falseIsabsolutepath:false,7.1.5FileInputStream类和FileOutputStream类,1FileInputStream类FileInputStream典型地表示一种顺序访问的文本文件,可以访问文件的一个字节、几个字节或整个文件。基本步骤:步骤一:利用FileInputStream打开文件。FileInputStreammyFileStream;myFileStream=newFileInputStream(“D:WU”,“abc.txt”)或者FilemyFile;FileInputStreammyFileStream;myFile=newFile(“D:WUabc.txt”)myFileStream=newFileInputStream(myFile),7.1.5FileInputStream类和FileOutputStream类,1FileInputStream类步骤二:使用方法read()读取信息。intread()intread(byteinput)intread(byteinput,intoffset,intlength)步骤三:读取完毕后要关闭FileInputStream对象。myFileStream.close(),7.1.5FileInputStream类和FileOutputStream类,1FileInputStream类FileInputStream类常用方法:publicabstractintread()publicintread(byteb)publicintread(byteb,intoff,intlen)。publicintavailable()publiclongskip(longn)publicintclose(),【实例7-4】importjava.io.*;publicclassFileInputStreamExamplepublicstaticvoidmain(Stringargs)throwsIOExceptionStringfname=FileInputStreamExample.java;tryFileInputStreamrf=newFileInputStream(fname);intn=16;bytebuffer=newbyten;while(rf.read(buffer,0,n)!=-1),【实例7-4】System.out.println();rf.close();/关闭输入流catch(IOExceptionioe)System.out.println(ioe);catch(Exceptione)System.out.println(e);,7.1.5FileInputStream类和FileOutputStream类,2FileOutputStream类FileOutputStream类用来处理以文件作为数据输出目的数据流基本步骤包括:步骤一:利用FileOutputStream打开文件。FileOutputStreammyFileStream;myFileStream=newFileOutputStream(“D:WU”,“abc.txt”)或者FilemyFile;FileOutputStreammyFileStream;myFile=newFile(“D:WUabc.txt”)myFileStream=newFileOutputStream(myFile),7.1.5FileInputStream类和FileOutputStream类,2FileOutputStream类步骤二:使用方法write()写信息。publicvoidwrite(byteb):publicvoidwrite(byteb,intoff,intlen)publicabstractvoidwrite(intb)步骤三:读取完毕后要关闭FileOutputStream对象。myFileStream.close(),7.1.5FileInputStream类和FileOutputStream类,FileOutputStream类常用方法:publicvoidwrite(byteb)publicvoidwrite(byteb,intoff,intlen)publicabstractvoidwrite(intb)publicvoidflush()publicvoidclose(),【实例7-5】importjava.io.*;publicclassFileOutputStreamExamplepublicstaticvoidmain(Stringargs)trySystem.out.print(输入一行字符:);intcount,n=512;bytebuffer=newbyten;FileOutputStreamwf=newFileOutputStream(Output.txt);count=System.in.read(buffer);wf.write(buffer,0,count);/写入输出流wf.close();/关闭输出流System.out.println(输入行字符已保存到Output.txt!);,【实例7-5】catch(IOExceptionioe)System.out.println(ioe);catch(Exceptione)System.out.println(e);,7.1.6DataInputStream类和DataOutputStream类,1DataInputStreamDataInputStream与FileInputStream差不多,可以直接读取任意一种变量类型。一般来说,对二进制文件使用DataInputStream流。打开和关闭DataInputStream对象时,其方法与FileInputStream相同。也可以使用read()方法读取文件内容,同时还可以使用其它方法来访问不同类型的数据。,7.1.6DataInputStream类和DataOutputStream类,1DataInputStream打开DataInputStream流DataInputStreammyFileStream;myFileStream=newDataInputStream(“D:WU”,“abc.txt”)读取DataInputStream流myFileStream.read()关闭DataInputStream流myFileStream.close(),7.1.6DataInputStream类和DataOutputStream类,主要方法bytereadByte()读取byte型数据intreadUnsignedByte()读取unsignedbyte型数据shortreadShort()读取short型数据intreadUnsignedShort()读取unsignedshort型数据charreadChar()读取char型数据intreadInt()读取int型数据longreadLong()读取long型数据floatreadFloat()读取float型数据doublereadDouble()读取double型数据StringreadLine()读取line型数据,7.1.6DataInputStream类和DataOutputStream类,2DataOutputStream类DataOutputStream与FileOutputStream差不多,可以直接写任意一种变量类型。一般来说,对二进制文件使用DataOutputStream流。打开和关闭DataOutputStream对象时,其方法与FileOutputStream相同。也可以使用write()方法写文件内容,同时还可以使用其它方法来访问不同类型的数据。,7.1.6DataInputStream类和DataOutputStream类,1DataInputStream打开DataOutputStream流DataOutputStreammyFileStream;myFileStream=newDataOutputStream(“D:WU”,“abc.txt”)读取DataOutputStream流myFileStream.write()关闭DataInputStream流myFileStream.close(),7.1.6DataInputStream类和DataOutputStream类,主要方法voidwriteByte()写入byte型数据voidwriteBoolean()写入boolean型数据voidwriteShort()写入short型数据voidwriteChar()写入char型数据voidwriteInt()写入int型数据voidwriteLong()写入long型数据voidwriteFloat()写入float型数据voidwriteDouble()写入double型数据voidwriteBytes()写入bytes型数据voidwriteChars()写入chars型数据,7.1.7随机访问文件,对于很多场合,例如银行系统、实时销售系统,要求能够迅速、直接地访问文件中的特定信息,而无需查找其他的记录。这种类型的即时访问可能要用到随机存取文件和数据库。随机文件的应用程序必须指定文件的格式。最简单的是要求文件中的所有记录均保持相同的固定长度。利用固定长度的记录,程序可以容易地计算出任何一条记录相对于文件头的确切位置。,7.1.7随机访问文件,Java.io包提供了RandomAccessFile类用于随机文件的创建和访问,实现了DataOutput和DataInput接口,可用来读写各种数据类型。RandomAccessFile类有个位置指示器,对文件指针显式操作的方法有:intskipBytes(intn):把文件指针向前移动指定的n个字节voidseek(long):移动文件指针到指定的位置。longgetFilePointer():得到当前的文件指针。,7.1.7随机访问文件,1构造函数:publicRandomAccessFile(Stringname,Stringmode)publicRandomAccessFile(Filefile,Stringmode)mode的取值“r”只读“rw”读写“rws”同步读写“rwd”数据同步读写,7.1.7随机访问文件,2主要方法publicRandomAccessFile(Filef,Stringmode)publicvoidsetLength(longnewLength)publiclonglength()publicvoidseek(longpos)publicintskipBytes(intn)publicintread()publicfinaldoublereadDouble()publicfinalvoidwriteC

温馨提示

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

最新文档

评论

0/150

提交评论