输入输出和文件操作_第1页
输入输出和文件操作_第2页
输入输出和文件操作_第3页
输入输出和文件操作_第4页
输入输出和文件操作_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

IOSystem 输入 输出流 和文件操作 流的定义和作用流的定义 方向性和读 写操作 通向数据源的通路数据源 文件 内存或者网络连接流的作用流采用缓冲区技术流的存在 流的概念 字节流和字符流 流按照处理数据的单位可以分为两种 字节流和字符流 文件 文本文件二进制文件 二进制文件的基本存储单位是字节文本文件的基本存储单位是字符 字符编码 计算机里只有数字 计算机软件里的一切都是用数字来表示的 屏幕上显示的一个个字符也不例外字符a对应数字97 字符b对应数字98等 这种字符与数字对应的编码规则称为ASCII 美国标准信息交换码 ASCII的最高bit位都为0 也就是说这个数字都在0和127之间中国大陆将每一个中文字符都用两个字节的数字表示 中文字符的每个字节的最高bit都为1 中国大陆为每个中文字符制定的编码规则称为GB2312 国标码 在GB2312的基础上 对更多的中文字符 包括繁体 进行了编码 新的编码规则称为GBK 字符编码 在中国大陆使用的计算机系统上 GBK和GB2312就被称为该系统的本地字符集 中国 的 中 字 在中国大陆的编码是十六进制的D6D0 而在中国台湾的编码是十六进制的A4A4 台湾地区对中文字符集的编码规则称为BIG5 大五码 在一个国家的本地化系统中出现的一个字符 通过电子邮件传送到另外一个国家的本地化系统中 看到的就不是那个原来字符了 而是另外那个国家的字符或者是乱码 Unicode编码 ISO 国际标准化组织 将全世界所有的符号进行了统一编码 称为Unicode编码 中 这个符号 在全世界的任何角落始终对应的都是一个十六进制的数字4e2d如果所有的计算机系统都是使用Unicode编码 在中国大陆的本地化系统中显示的 中 这个符号 发送到任何别的的本地化系统中 显示的仍然是 中 这个符号Unicode编码的字符都占用两个字节的大小 对于ASCII码所表示的字符 只是简单的在ASCII码原来占用的一二字节前面 增加了一个所有bit都为0的字节Unicode只占用两个字节 在全世界范围内所表示的字符个数不会超过2的16次方 65536 实际上 Unicode编码中还保留了两千多个数值没有用与字符编码在相当长的一段时间内 本地化字符编码将与Unicode编码共存 Java中的字符使用的都是Unicode编码 Java在通过Unicode保证跨平台特性的前提下 也支持本地平台字符集 Java的输入 输出流与文件操作概述 流类输入流字节输入流 InputStream字符输入流 Reader输出流字节输出流 OutputStream字符输出流 Writer 文件操作类文件类 File随机存取文件类 RandomAccessFile类 几乎所有的输入输出的类的方法 都有可能抛出异常 I OException InputStream类的层次图 InputStream InputStream是基本的输入流类 是一个抽象类它的任务就是代表那些能从各种输入源获取数据的类 输入源 子类扩展 可为 byte数组String对象文件类似流水线的 管道 pipe 把东西从一头放进去 让它从另一头出来 一个 流的序列 Asequenceofotherstreams 可以将它们组装成一个单独的流 其它源 比如Internet的连接 InputStream类 它的常用方法有 intread 读取一个字节 返回值为所读的字节intread byte b 读入b length个字节到数组b并返回实际读入的字节数intread byte b intoff intlen 读入流中的数据到数组b 不过在从off开始的长度为len的数组元素中longskip longn 跳过输入流上的n个字节并返回实际跳过的字节数intavailable 返回当前输入流中可读的字节数close 流操作完毕后必须关闭 InputStream类 使用输入流中的标记 voidmark intreadlimit 记录当前读指针所在位置 readlimit表示读指针读出readlimit个字节后所标记的指针位置才失效voidreset 把读指针重新指向用mark方法所记录的位置booleanmarkSupported 当前的流是否支持读指针的记录功能 OutputStream类的层次图 OutputStream OutputStream是最基本的输出流类与InputStream对应 它定义了输出流类共同的特性但它的所有方法都是void返回类型 常用方法有 voidwrite intb 往流中写一个字节bvoidwrite byteb 往流中写一个字节数组bvoidwrite byteb intoff intlen 把字节数组b中从下标off开始 长度为len的字节写入流中flush 刷空输出流 并输出所有被缓存的字节由于某些流支持缓存功能 该方法将把缓存中所有内容强制输出到流中 close 流操作完毕后必须关闭 Java的标准输入 输出 标准输入 输出常量publicfinalclassSystemextendsObject publicfinalstaticInputStreamin 标准输入常量publicfinalstaticPrintStreamout 标准输出常量publicfinalstaticPrintStreamerr 标准错误输出常量 PrintStream类 publicclassPrintStreamextendsFilterOutputStream publicvoidprint booleanb publicvoidprint charc publicvoidprint longl publicvoidprint inti publicvoidprint floatf publicvoidprint doubled publicvoidprint Strings publicvoidprint Objectobj publicvoidprintln 标准输入 输出 Case KeyboardInput java 标准输入过程 标准输出过程 介质流的概念和使用 流在某一个介质上发生 通常表示数据源 目的地 FileInputStream类 构造函数FileInputStream Filefile 创建一个文件输入流对象 从file对象指定的文件中读取字节流Filef newFile test txt FileInputStreaminTow newFileInputStream f FileInputStream Stringname 创建一个文件输入流对象 并从指定name文件名的文件中读取数据FileInputStreaminOne newFileInputStream test txt FileOutputStream类 构造函数FileOutputStream Filefile FileOutputStream Filefile booleanappend 创建一个文件输出流对象 并将内容写到指定的file对象中 如果append为真 则接着文件最后写 否则从头写FileOutputStream Stringname FileOutputStream Stringname booleanappend 创建一个文件输出流对象 并将内容写到指定的name文件名 如果append为真 则接着文件最后写 否则从头写如果该文件不存在 则创建一个同名的新文件 此时的name只能是文件名 而非目录名Case ByteFile java 过滤流的作用 过滤流是构造在介质流或其他过滤器流的基础上的流 它们将流过的数据进行加工 从而实现复杂的数据读写的能力 过滤流只是对流过的数据进行加工 所以使用过滤流必须给它指定一个待处理的流 基本数据类型 过滤器流类 BufferedInputStream和BufferedOutputStream类 缓冲流为I O流增加了内存缓冲区 增加缓冲区有两个基本目的允许java程序一次不只操作一个字节 这样提高了程序的性能由于有了缓冲区 使得在流上执行skip mark和reset方法成为可能BufferedInputStream和BufferedOutputStream是java提供的两个缓冲区包装类 不管底层系统是否使用了缓冲区 这两个类在自己的实例对象中创建缓冲区 BufferedInputStream的两个构造函数BufferedInputStream InputStreamin BufferedInputStream InputStream intsize BufferedOutputStream的两个构造函数BufferedOutputStream OutputStreamout BufferedOutputStream OutputStreamout intsize DataInputStream与DataOutputStream类 DataInputStream提供的函数 intread byte b intoff intlen BooleanreadBoolean bytereadByte charreadChar doublereadDouble floatreadFloat IntreadInt DataOutputStream提供的函数 Voidwrite byte b intoff intlen VoidwriteBoolean booleanv VoidwriteByte intv VoidwriteDouble doublev VoidwriteFloat floatv VoidwriteInt intv VoidwriteLong longv 这两个流类提供了对数据类型的输入输出 Case PersonIo java 对象输入 输出流类 ObjectInputStream类publicclassObjectInputStreamextendsInputStreamimplementsObjectInput ObjectStreamConstants publicObjectInputStream InputStreamin throwsIOException 构造方法publicfinalObjectreadObject throwsIOException ClassNotFoundException 读取一个对象 ObjectOutputStream类 publicclassObjectOutputStreamextendsOutputStreamimplementsObjectOutput ObjectStreamConstants publicObjectOutputStream OutputStreamout throwsIOException 构造方法publicfinalvoidwriteObject Objectobj throwsIOException 写入一个对象 Case StudentFile java 管道流及其应用 PipedInputStreamin newPipedInputStream try PipedOutputStreamout newPipedOutputStream in catch IOExceptionioe PipedInputStream类PipedOutputStream类PipedReader类PipedWriter类 使用管道流实现发牌程序 发牌程序中多个线程对象间的管道流Case SendCard java Reader与Writer类 字符流 InputStream与OutputStream是用来处理字节的 用来处理字符文本时不太方便 Reader和Writer是所有字符流类的抽象基础类 用于简化对字符串的输入输出编程 即用于读写文本数据 字符流以16位的Unicode码表示的字符为基本处理单位 Reader 提供的操作 publicintread throwsIOException 读取一个字符 返回值为读取的字符publicintread charcbuf throwsIOException 读取一系列字符到数组cbuf 中 返回值为实际读取的字符的数量publicabstractintread charcbuf intoff intlen throwsIOException 读取len个字符 从数组cbuf 的下标off处开始存放 返回值为实际读取的字符数量 该方法必须由子类实现publicbooleanmarkSupported 判断当前流是否支持做标记publicvoidmark intreadAheadLimit throwsIOException 给当前流作标记 最多支持readAheadLimit个字符的回溯 publicvoidreset throwsIOException 将当前流重置到做标记处publicabstractvoidclose throwsIOException 关闭 Writer 提供的操作 publicvoidwrite intc throwsIOException 将整型值c的低16位写入输出流publicvoidwrite Stringstr throwsIOException 将字符串str中的字符写入输出流publicvoidwrite charcbuf throwsIOException 将字符数组cbuf 写入输出流publicabstractvoidwrite charcbuf intoff intlen throwsIOException 将字符数组cbuf 中的从索引为off的位置处开始的len个字符写入输出流publicvoidwrite Stringstr intoff intlen throwsIOException 将字符串str中从索引off开始处的len个字符写入输出流flush 刷空输出流 并输出所有被缓存的字节 close 关闭流 流的分类 Reader 流的分类 Writer BufferedReader和PrinterWriter 缓冲流为I O字符串流增加内存缓冲区 BufferedReader 对输入字符流进行缓冲BufferedReader Readerin BufferedReader Readerin intsz StringreadLine PrinterWriter 格式化输出PrintWriter OutputStreamout PrintWriter OutputStreamout booleanautoFlush PrintWriter Writerout PrintWriter Writerout booleanautoFlush 字节流与字符流的转换 InputStreamReader类将字节流转换成字符流例 NewBufferedReader newinputStreamReader System in OutputStreamReader类将写入的字符编码转换成字节码写入字节流例 NewBufferedWriter newinputStreamWriter System out Case NewIoDemo java 文件字符输入 输出流类 FileReader类构造函数publicFileReader StringfileName throwsFileNotFoundException 构造方法publicFileReader Filefile throwsFileNotFoundExceptionFileWriter类构造函数publicFileWriter StringfileName throwsIOException 构造方法publicFileWriter StringfileName booleanappend throwsIOExceptionpublicFileWriter Filefile throwsIOExceptionpublicFileWriter Filefile booleanappend throwsIOException 字符缓冲流类 BufferedReader类publicBufferedReader Readerin 构造方法publicStringreadLine throwsIOException 读取一行字符串 输入流结束时返回nullBufferedWriter类publicBufferedWriter Writerout 构造方法publicBufferedWriter Writerout intsz sz指定字符缓冲区长度publicvoidnewLine throwsIOException 写入一个换行符Case TextFile java File类 File类是IO包中唯一能够代表磁盘文件或目录本身的对象 File类定义了一些与平台无关的方法进行文件操作 如建立 删除 查询 重命名等 可以用它来表示某个文件的名字 也可以用它来表示目录里一组文件的名字 File类 File给出的构造函数publicFile Stringpath 如果path是实际存在的路径 则该File对象表示的是目录如果path是文件名 则该File对象表示的是文件publicFile Stringpath Stringname path是路径名 name是文件名publicFile Filedir Stringname dir是路径名 name是文件名 File类的方法 文件名的处理StringgetName 得到一个文件的名称 不包括路径 StringgetPath 得到一个文件的路径名StringgetAbsolutePath 得到一个文件的绝对路径名StringgetParent 得到一个文件的上一级目录名FilegetParentFile 返回父文件对象 File类的方法 获得或设置文件属性Longlength 返回文件的字节长度LonglastModified 返回文件的最后修改时间booleanexists 测试当前File对象所指示的文件是否存在booleancanWrite 测试当前文件是否可写booleancanRead 测试当前文件是否可读BooleanisHidden 判断文件是否是隐藏的booleanisFile 测试当前文件是否是文件 不是目录 booleanisDirectory 测试当前文件是否是目录BooleansetReadOnly 设置文件属性为只读BooleansetLastModified longtime 设置文件的最后修改时间 File类 文件操作的方法IntcompareTo Filepathname 比较两个文件对象的内容booleanrenameTo Filedest 文件重命名booleancreateNewFile throwsIOException 创建新文件目录操作booleanmkdir 根据当前对象生成一个由该对象指定的路径String list 列出当前目录下的文件File listFiles 返回当前目录下的所有文件对象Case FileList java 文件过滤器接口 FileFilter和FilenameFilter接口publicinterfaceFileFilter publicbooleanaccept Filepathname publicinterfaceFilenameFilter publicbooleanaccept Filedir Stringname 获得文件列表时使用过滤器publicString list FilenameFilterfilter 显示文件清单时使用过滤器publicFile listFi

温馨提示

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

评论

0/150

提交评论