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.4 File类 7.1.5 FileInputStream类和FileOutputStream类 7.1.6 DataInputStream类和DataOutputStream类 7.1.7 随机访问文件 7.1.8 Reader类和Writer类 7.1.9 IOException类的几个子类 7.1.1 流的含义 流 是一个很形象的概念,当程序需要读取数据的时候, 就会开启一个通向数据源的流,这个数据源可以是文 件,内存,或是网络连接。类似的,当程序需要写入 数据的时候,就会开启一个通向目的地的流。这时候 你就可以想象数据好像在这其中“流”动一样,如下 图7-1: 图7-1 流 7.1.1 流的含义 数据流是指一组有顺序的、有起点的和终点的字节集合 Java将读取数据的对象称为输入流;能向其写入数据的 对象称为输出流。 字节流,被称作输入流(Input stream)或输出流( Output stream),基于数据的I/O是二进制(比如说表 示图像的位图) 字符流,被称作Reader或Writer,基于文本的I/O都是一些 人们能够阅读的字符(比如说程序的源代码,字符流 7.1.1 流的含义 InputStream,OutputStream,Reader,Writer是四个抽 象类。Java中其他多种多样变化的流均是由它们派生出 来的。在这四个抽象类中,InputStream和Reader定义了 完全相同的接口: int read() int read(char cbuf) int read(char cbuf, int offset, int length) 而OutputStream和Writer也是如此: int write(int c) int write(char cbuf) int write(char cbuf, int offset, int length) 7.1.2 流的层次结构 InputStream和OutputStream流层次结构如图7-2 和图7-3所示 Reader和Writer流层次结构如图7-4和图7-5所示 图7-2 InputStream输入流层次结构 StringBufferInputStream 字符串缓冲区输入流 ByteArrayInputStream 字节数组输入流 FileInputStream 文件输入流 FilterInputStream 过滤器输入流 PipedInputStream 管道输入流 SequenceInputStream 顺序输入流 ObjectInputStream 对象输入流 BufferInputStream 带缓冲区输入流 PushbackInputStream 回退输入流 LineNumberInputStream 行号输入流 DataInputStream 数据输入流 InputStream 输入流 图7-3 OutputStream输出流层次结构 ByteArrayOutputStream 字节数组输出流 FileOutputStream 文件输出流 FilterOutputStream 过滤器输出流 PipedOutputStream 管道输出流 ObjectOutputStream 对象输出流 BufferOutputStream 带缓冲区输出流 PrintStream 回退输出流 DataOutputStream 数据输出流 OutputStream 输出流 图7-4 Reader流层次结构 BufferReader Reader CharArrayReader InputStreamReader FilterReader PipedReader StringReader LineNumberReader FileReader PushbackrReader 图7-5 Writer流层次结构 Buffer Writer Writer CharArray Writer OutputStream Writer Filter Writer Piped Writer String Writer FileWriter 7.1.3 标准输入输出 标准输入输出都是System类中定义的类成员变量 ,包括: System.in:代表标准输入流,默认状态对应于键盘输 入。 System.out:代表标准输出流,默认状态对应于屏幕 输出。 System.err:代表标准错误输出流,默认状态对应于 屏幕输出。 【实例7-1】 import java.io.*; class stdIOExample1 public static void main(String args) throws IOException int ch; int count = 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 + “ total bytes.“); 说明:在本实例中,利用System.in.read()不断从键盘输入字符,并在显 示屏输出,count用于累计输入字符个数,当输入字符为0时,输入终止。 7.1.4 File类 含义: File类与InputStream / OutputStream类同属于一个包,它不 允许访问文件内容。File类主要用于命名文件、查询文件属性 和处理文件目录。 1File类的构造方法 public File(String name):指定与File对象关联的文件或目 录的名称,name可以包含路径信息及文件或目录名。 例如: File myFile; MyFile= new File(“D:WUabc.txt”) 7.1.4 File类 1File类的构造方法 public File(String pathName,String name): 使用参数pathName(绝对路径或相对路径)来定位参 数name所指定的文件或目录。 例如: File myFile; MyFile= new File(“D:WU”,“abc.txt”); 7.1.4 File类 1File类的构造方法 public File(File directory,String name):使 用现有的File对象directory(绝对路径或相对路径 )来定位参数name所指定的文件或目录。 例如: File myDir=new File(“D:WU”); MyFile= new File(myDir,“abc.txt”); public File(URI rui):使用给定的同一资源定位 符来定位文件。 7.1.4 File类 2File类常见方法 String getName();得到一个文件的名称(不包括路径) String getPath();得到一个文件的路径名 String getAbsolutePath();得到一个文件的绝对路径名 String getParent();得到一个文件的上一级目录名 String renameTo(FilenewName);将当前文件名更名为 给定文件的完整路径 booleanexists();测试当前File对象所指示的文件是否存 在 booleancanWrite();测试当前文件是否可写 booleancanRead();测试当前文件是否可读 7.1.4 File类 2File类常见方法 boolean isFile();测试当前文件是否是文件(不是目录) boolean isDirectory();测试当前文件是否是目录 longlastModified();得到文件最近一次修改的时间 longlength(); 得到文件的长度,以字节为单位 booleandelete();删除当前文件 booleanmkdir();根据当前对象生成一个由该对象指定的 路径 Stringlist(); 列出当前目录下的文件 【实例7-3】 import java.io.*; public class fileTest void listAttributes(String fileName) File f=new File(fileName); if( f.exists( ) ) System.out.println(“Attributes of “+fileName); System.out.println(“Exist: “+f.exists(); System.out.println(“Can read: “+f.canRead(); System.out.println(“Can write: “+f.canWrite(); System.out.println(“Is file: “+f.isFile(); System.out.println(“Is director: “+f.isDirectory(); System.out.println(“Is absolute path: “+f.isAbsolute(); else System.out.println(fileName+“ does not exist!“); 【实例7-3】 public static void main(String args ) if(args.length!=1) System.out.println(“Usage: java fileTest “); System.exit(1); fileTest obj=new fileTest ( ); obj.listAttributes(args0); 编译完毕后,按照如下方式运行: g:java01java fileTest fileTest.java 则得到如下结果: Attributes of fileTest.java Exist: true Can read: true Can write: true Is file: true Is director: false Is absolute path: false 7.1.5 FileInputStream类和FileOutputStream类 1FileInputStream类 FileInputStream典型地表示一种顺序访问的文本文件,可以访 问文件的一个字节、几个字节或整个文件。 基本步骤: 步骤一:利用FileInputStream打开文件。 FileInputStream myFileStream; myFileStream= new FileInputStream(“D:WU”, “abc.txt”) 或者 File myFile; FileInputStream myFileStream; myFile= new File(“D:WUabc.txt”) myFileStream= new FileInputStream(myFile) 7.1.5 FileInputStream类和FileOutputStream类 1FileInputStream类 步骤二:使用方法read()读取信息。 int read() int read(byte input) int read(byte input,int offset,int length) 步骤三:读取完毕后要关闭FileInputStream对象。 myFileStream.close() 7.1.5 FileInputStream类和FileOutputStream类 1FileInputStream类 FileInputStream类常用方法: public abstract int read( ) public int read(byte b ) public int read(byte b , int off, int len) 。 public int available( ) public long skip(long n) public int close( ) 【实例7-4】 import java.io.*; public class FileInputStreamExample public static void main(String args) throws IOException String fname=“FileInputStreamExample.java“; try FileInputStream rf = new FileInputStream(fname); int n=16; byte buffer = new byten; while (rf.read(buffer,0,n)!=-1) 【实例7-4】 System.out.println(); rf.close(); /关闭输入流 catch (IOException ioe) System.out.println(ioe); catch (Exception e) System.out.println(e); 7.1.5 FileInputStream类和FileOutputStream类 2FileOutputStream类 FileOutputStream类用来处理以文件作为数据输出目的数据流 基本步骤包括: 步骤一:利用FileOutputStream打开文件。 FileOutputStream myFileStream; myFileStream= new FileOutputStream(“D:WU”, “abc.txt”) 或者 File myFile; FileOutputStream myFileStream; myFile= new File(“D:WUabc.txt”) myFileStream= new FileOutputStream(myFile) 7.1.5 FileInputStream类和FileOutputStream类 2FileOutputStream类 步骤二:使用方法write ()写信息。 public void write(byte b ): public void write(byte b , int off, int len) public abstract void write(int b) 步骤三:读取完毕后要关闭FileOutputStream对象。 myFileStream.close() 7.1.5 FileInputStream类和FileOutputStream类 FileOutputStream类常用方法: public void write(byte b ) public void write(byte b , int off, int len) public abstract void write(int b) public void flush( ) public void close( ) 【实例7-5】 import java.io.*; public class FileOutputStreamExample public static void main(String args) try System.out.print(“输入一行字符: “); int count,n=512; byte buffer = new byten; FileOutputStream wf = new FileOutputStream(“Output.txt“); count = System.in.read(buffer); wf.write(buffer,0,count); /写入输出流 wf.close(); /关闭输出流 System.out.println(“输入行字符已保存到 Output.txt!“); 【实例7-5】 catch (IOException ioe) System.out.println(ioe); catch (Exception e) System.out.println(e); 7.1.6 DataInputStream类和 DataOutputStream类 1DataInputStream DataInputStream与FileInputStream差不多,可以直 接读取任意一种变量类型。一般来说,对二进制文件 使用DataInputStream流。 打开和关闭DataInputStream对象时,其方法与 FileInputStream相同。也可以使用read()方法读 取文件内容,同时还可以使用其它方法来访问不同类 型的数据。 7.1.6 DataInputStream类和 DataOutputStream类 1DataInputStream 打开DataInputStream流 DataInputStream myFileStream; myFileStream= new DataInputStream (“D:WU”, “abc.txt”) 读取DataInputStream流 myFileStream.read() 关闭DataInputStream流 myFileStream.close() 7.1.6 DataInputStream类和 DataOutputStream类 主要方法 byte readByte()读取byte型数据 int readUnsignedByte()读取unsignedbyte型数据 short readShort()读取short型数据 int readUnsignedShort()读取unsignedshort型数据 char readChar()读取char型数据 int readInt() 读取int型数据 long readLong()读取long型数据 float readFloat()读取float型数据 double readDouble()读取double型数据 String readLine()读取line型数据 7.1.6 DataInputStream类和 DataOutputStream类 2DataOutputStream类 DataOutputStream与FileOutputStream差不多,可以 直接写任意一种变量类型。一般来说,对二进制文件 使用DataOutputStream流。 打开和关闭DataOutputStream对象时,其方法与 FileOutputStream相同。也可以使用write()方法 写文件内容,同时还可以使用其它方法来访问不同类 型的数据。 7.1.6 DataInputStream类和 DataOutputStream类 1DataInputStream 打开DataOutputStream流 DataOutputStream myFileStream; myFileStream= new DataOutputStream (“D:WU” ,“abc.txt”) 读取DataOutputStream流 myFileStream.write() 关闭DataInputStream流 myFileStream.close() 7.1.6 DataInputStream类和 DataOutputStream类 主要方法 void writeByte()写入byte型数据 void writeBoolean()写入boolean型数据 void writeShort()写入short型数据 void writeChar()写入char型数据 void writeInt()写入int型数据 void writeLong()写入long型数据 void writeFloat()写入float型数据 void writeDouble()写入double型数据 void writeBytes()写入bytes型数据 void writeChars()写入chars型数据 7.1.7 随机访问文件 对于很多场合,例如银行系统、实时销售系统, 要求能够迅速、直接地访问文件中的特定信息, 而无需查找其他的记录。这种类型的即时访问可 能要用到随机存取文件和数据库。随机文件的应 用程序必须指定文件的格式。最简单的是要求文 件中的所有记录均保持相同的固定长度。利用固 定长度的记录,程序可以容易地计算出任何一条 记录相对于文件头的确切位置。 7.1.7 随机访问文件 Java.io包提供了RandomAccessFile类用于随机 文件的创建和访问,实现了DataOutput和 DataInput接口,可用来读写各种数据类型。 RandomAccessFile类有个位置指示器,对文件指 针显式操作的方法有: int skipBytes(int n):把文件指针向前移动指定的 n个字节 void seek(long):移动文件指针到指定的位置。 long getFilePointer():得到当前的文件指针。 7.1.7 随机访问文件 1构造函数: public RandomAccessFile(String name, String mode ) public RandomAccessFile( File file, String mode ) mode 的取值 “r” 只读 “rw” 读写 “rws” 同步读写 “rwd” 数据同步读写 7.1.7 随机访问文件 2主要方法 public RandomAccessFile(File f, String mode) public void setLength(long newLength) public long length() public void seek(long pos) public int skipBytes(int n) public int read() public final double readDouble() public final void writeChar(int v) public final void writeInt(int v) public long getFilePointer() 7.1.7 随机访问文件 3应用过程 创建和打开随机文件访

温馨提示

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

评论

0/150

提交评论