[计算机软件及应用]10-输入与输出.ppt_第1页
[计算机软件及应用]10-输入与输出.ppt_第2页
[计算机软件及应用]10-输入与输出.ppt_第3页
[计算机软件及应用]10-输入与输出.ppt_第4页
[计算机软件及应用]10-输入与输出.ppt_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

Date: 25. Feb 2005 第十章第十章 输入与输出输入与输出 成都东软信息技术学院 计算机系 季建华 Beyond Technology B313 Email: Date: 25. Feb 2005 10.1 Java的输入与输出 l Java Input/Output, 简称Java I/O l 从键盘读取数据、操作文件和目录、对文件中进行读写、都是输入输 出处理。 l Java语言用统一的接口-流(Stream),来抽象不同类型的输入输 出源。 l Java API 中通过类库 java.io 来实现I/O处理。 Date: 25. Feb 2005 10.1.1 流 l 流(Stream)概念最早使用在UNIX系统中 l 流模型如同水管的水流一般 l 当程序开启来源的输入流(例如:文件、内存和缓冲区等)程序可以 从输入流依序读取数据 输入源输出源程序 读取 输入流输出流 写入 Date: 25. Feb 2005 流的概念图 读取 写入 Date: 25. Feb 2005 10.1.2 Java API定义的基本I/O流的种类 字符流(Character Stream)。 字节流(Byte Stream)。 u在最底层所有的I/O都是字节形式的。 u字节流可以方便有效地处理字符。 Date: 25. Feb 2005 字节流类(Byte Stream) u字节流用来处理“计算机格式”(Machine-formatted) 的字节数据(8-bit, binary)。 u最顶层的抽象类:InputStream,OutputStream u在java.io类库中提供多种继承自 InputStream/OutputStream的子类别: FileInputStream/FileOutputStream 处理文件I/O。 DataInputStream/DataOutputStream 读取和写入Java基本数据型态的数据。 BufferInputStream/BufferedOutputStream 处理缓冲区I/O。(加快处理速度) Date: 25. Feb 2005 字节流类 Date: 25. Feb 2005 InputStream类中的常用方法 int read():从输入流中读一个字节,形成一个0255之间的整数返回 (是一个抽象方法)。 int read(byte b ):读多个字节到数组中。 int read(byte b , int off, int len):从输入流中读取长度为len的数据 ,写入数组b中从索引off开始的位置,并返回读取的字节数。 对于这三个方法,若返回1,表明流结束。 skip():跳过流中若干字节数 available():返回流中可用字节数 mark():在流中标记一个位置 reset():返回标记过得位置 markSupport():是否支持标记和复位操作 close():关闭流 Date: 25. Feb 2005 OutputStream类中的常用方法 write(int b):将一个整数输出到流中(只输出低位字节, 抽象方法) nwrite(byte b):将字节数组中的数据输出到流中 nwrite(byte b, int off, int len):将数组b中从off指定的 位置开始,长度为len的数据输出到流中 flush():刷空输出流,并将缓冲区中的数据强制送出 close():关闭流 Date: 25. Feb 2005 u字符串流是用来处理“人类阅读”(Human-readable)的 字符数据 (character) u最顶层的抽象类:Reader,Writer u在java.io套件提供多种继承自Reader/Writer的子类别: BufferReader/BufferWriter 处理缓冲区I/O。(加快处理速度) InputStreamReader/OutputStreamWriter InputStreamReader在读取字节数据后,可以将它 转换成字符数据,OuputStreamWriter是将字符转 换成字节数据。 FileReader/FileWriter 处理档案I/O。 字符流类(Character Stream) Date: 25. Feb 2005 字节流类 Date: 25. Feb 2005 10.1.3 标准输入/输出 所谓 “标准输入” 指的是 System.in。 System.in 是InputStream的对象。 欲由 System.in (属于 Byte Stream) 读入成字符数据 ( 属于 Character Stream),唯有使用 InputStreamReader (Byte Character 转换) 才行 Date: 25. Feb 2005 import java.io.*; public class Readln public static void main(String args) throws IOException InputStreamReader isr = new InputStreamReader(System.in); BufferedReader in = new BufferedReader(isr); System.out.print(“请输入你的姓名:“); String yourName = in.readLine(); System.out.println(“Hi! “ + yourName + “. How are you?“); isr.close(); in.close(); Date: 25. Feb 2005 所谓 “标准输出” 指的是 System.out System.out 是打印输出流PrintStream类的对象 欲将字符数据 (属于 Character Stream) 打印出至 System.out (属于 Byte Stream),唯有使用 OutputStreamWriter (Character Byte 转换) 才行 Date: 25. Feb 2005 import java.io.*; public class NumberInput public static void main(String args) try InputStreamReader ir; BufferedReader in; ir = new InputStreamReader(System.in); in = new BufferedReader(ir); String s = in.readLine(); System.out.println(“Input value is:“ + s); int i = Integer.parseInt(s); i *= 2; System.out.println(“Input value changed after doubled:“ + i); catch(IOException e) System.out.err(e); Date: 25. Feb 2005 10.2 文件的输入/输出 u说明 文件是用来保存数据。 目录是管理文件的特殊机制。 在取得流之前,先要告诉 Java 哪一个文件夹及 文件要成为流的输入源或输出源 uJava 如何存取文件及文件夹 java.io.File Date: 25. Feb 2005 创建File类的对象 File类的构造方法 (1)File(String path):字符串参数path指明了新创建的File对象对应的 磁盘文件或目录名及其路径名。 path参数也可以对应磁盘上的某个目录,如“c:javatemp”或 “javatemp”。 (2)File(String path,String name):第一个参数path表示所对应的 文件或目录的绝对或相对路径,第二个参数name表示文件或目录名。 这里将路径与名称分开的好处是相同路径的文件或目录可共享同一个 路径字符串,管理、修改都较方便。 (3)File(File dir,String name):这个构造方法使用另一个已经存在的 代表某磁盘目录的File对象作为第一个参数,表示文件或目录的路径, 第二个字符串参数表述文件或目录名。 Date: 25. Feb 2005 相关方法 upublic boolean isDirectory() 传回目前 java.io.File 内所包含的这个名称是否 为一个 文件夹 upublic boolean isFile() 传回目前 java.io.File 内的名称是否为一个文件 upublic String list() 传回目前数据夹内所包含的文件名称及文件名称 获取文件或目录属性 Date: 25. Feb 2005 import java.io.*; public class Dir public static void main(String args) String filenames; File f = new File(args0); if ( f.isDirectory() ) filenames = f.list(); for(int i=0; i “ + fd.getName(); System.out.println(“1 file(s) has been renamed!“); else System.out.println(“Target name already exists!“); else System.out.println(“Wrong source name!“); Date: 25. Feb 2005 10.2.2 文件输入/输出 读取 (Reading) open a stream while more information read information close the stream 写入 (Writing) open a stream while more information write information close the stream Date: 25. Feb 2005 u FileInputStream(String fileName) throws FileNotFoundException u FileOutputStream(String fileName) throws FileNotFoundException u void close( ) throws IOException 对文件的操作结束后,需要调用close( )来关闭文件。 u int read( ) throws IOException 读文件,该方法每次被调用,它仅从文件中读取一个字节并将该 字节以整数形式返回。当读到文件尾时,返回-1。 u void write(int byteval) throws IOException 向文件中写数据,该方法按照byteval指定的数向文件写入字节。 尽管byteval作为整数声明,但仅低8位字节可以写入文件。 Date: 25. Feb 2005 import java.io.*; public class FileTest public static void main(String args) throws IOException File file1 = new File(“c:abc“); file1.mkdir(); File file2 = new File(file1, “a.txt“); FileOutputStream out1 = new FileOutputStream(file2); String s = “Welcome“; byte b = s.getBytes(); for(int i = 0; i 5; i+) out1.write(b, 0, b.length); out1.close(); FileInputStream in1 = new FileInputStream(file2); byte buf = new byte1024; int num; while(num = in1.read(buf) != -1) s=new String(buf,0,num); System.out.println(s); in1.close(); Date: 25. Feb 2005 10.2.3 随机存取文件 l FileInputStream和FileOutputStream实现的是对磁盘文件的顺序读 写,而且读和写要分别创建不同的对象。 l Java还定义了另一个功能更强大,使用更方便的类 RandomAccessFile,它可以实现对文件的随机读写操作。 Date: 25. Feb 2005 1创建RandomAccessFile对象 RandomAccessFile(String name, String mode); RandomAccessFile(File f, String mode); mode有两种取值:“r”代表了以只读方式打开文件;“rw”代表以 读写方式打开文件,这时用一个对象就可以同时实现读写两种操作 。 Date: 25. Feb 2005 2对文件位置指针的操作 RandomAccessFile实现的是随机读写,必须定义文件位置指针和 移动这个指针的方法。 (1)新建RandomAccessFile对象的文件位置指针位于文件的开 头处。 (2)每次读写操作之后,文件位置指针都相应后移读写的字节数 。 (3)利用getPointer()方法可获取当前文件位置指针从文件头算起 的绝对 位置。 (4)利用public void seek(long pos);方法可以移动文件位置指 针。 将文件位置指针移动到参数pos指定的从文件头算起的绝对位置处

温馨提示

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

评论

0/150

提交评论