




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第九章 输入输出流,输入输出流:,Java的输入输出功能必须借助于输入输出类库Java.io包来实现,这个包中的类大部分是用来完成流式输入输出的流类。 在java中,把能够读取一个字节序列的对象称为一个输入流,把能够写一个字节的对象称为一个输出流。分别由InputStream和OutputStream表示。 处理Unicode码的字符流,由抽象类Reader和Writer派生。,流,流是指在计算机的输入与输出之间的数据的序列,而Java中的数据流有位流(字节流)和字符流之分; 就流的运动方向而言,流可分为输入流(input stream)和输出流(output stream),输入流代表从外设流入计算机的数据序列;输出流代表从计算机流向外设的数据序列。,9.1 java.io包简介,java.io包通过数据流、序列和文件系统为系统提供输入输出。,9.2 InputStream类和 OutputStream类,InputStream类的实现: public abstract class InputStream extends Object InputStream类的方法 public int available() throws IOException 返回目前输入数据流中已有几个字符准备好被读取了 public void close()throws IOException 将这个输入数据流关闭 public abstract int read()throws IOException 从输入数据流读取下一个字节并返回返回值的范围从到,但如果已经到达数据流的结尾,没有数据可以读取了,则会返回抛出异常,InputStream类的方法,public int read(byte b)throws IOException 从输入数据流中读取数个字节放进数组b中,并返回所读取到的字符数目,最多可以读取和b长度相同的字符数,但如果没有读取到则返回 public long skip(long n)throws IOException 略过n个字节不读取,会返回实际略过的字节数目因为数据流中剩下的数据可能不到n个字节那么多,所以此时返回值会小于n,InputStream类的继承关系,InputStream FileInputStream(文件输入字节) FilterInputStream DataInputStream(格式转换) BufferedInputStream (缓冲功能),System.in是System的一个静态属性,属于InputStream类对象,用于输入字节数据流,对应标准输入设备:键盘。 Java实例标准输入 import java.io.*; public class StandardIn1 public static void main(String args) throws IOException char c; System.out.println(“ 输入一个字符“); c=(char)System.in.read(); System.out.print( “输入的字符是:“+c); ,标准输入System.in,OutputStream类,OutputStream类是所有输出数据流的父类,所以它也被实现成抽象类,定义了所有输出数据流都具有的共同特性 OutputStream类的实现: public abstract class OutputStream extends Object,OutputStream类的继承关系,OutputStream FileOutputStream(文件输出) FilterOutputStream PrintStream(输出到屏幕) DataOutputStream(格式转换) BufferedOutputStream (缓冲功能),OutputStream类的method,public void close( ) throws IOException 关闭与输出数据流的连系 public void flush( )throws IOException 将写入的数据确实送到接受数据的装置去因为写入的数据通常会先放到高速缓存(cache)里面,等到数量达到某一程度时,用这个方法将强迫数据写进去 public void write(byte b)throws IOException 将数组b中的数据写入输出数据流,OutputStream类的method,public void write(byte b,int off,int len)throws IOException 将b数组中从第off个字节开始,共写入len个字节到输出数据流 public abstract void write(int b) throws IOException 写入一个字符到输出数据流这个method只会将b的个低位写入,将24个高位忽略掉,标准输出System.out,System.out是它的一个静态属性,属于PrintStream类对象,用于输出字节数据流,对应标准输出设备:屏幕。,9.3 File类,File类指的是磁盘上的目录或文件.“”表示分隔符。例如:D:myjavaHello.java,文件类的主要方法:,public File(File parent,String child):建立一个以parent加上child为路径的File组件。 public File(String pathname):建立一个以pathname为路径的File组件 public String getName():得到文件的名字 public String getPath():得到文件的路径名 public String getParent():得到文件的上级路径名 public boolean exists():判断文件或目录是否存在 public long length():返回文件的字节数 public boolean createNewFile() throws IOException:以File组件的内容为文件名建立一个新文件,如果原文件已存在,返回false,如果建立成功,则返回true. public void delete():删除文件,Java实例,import java.awt.*; import java.io.*; public class FileTest public static void main(String args) File f=new File(“D:“,“c.txt“); try boolean b=f.createNewFile(); System.out.println(f.getPath(); System.out.println(f.getParent(); System.out.println(f.getName(); System.out.println(b); catch(Exception e) ,9.4 RandomAccessFile类,RandomAccessFile流由于实现了DataInput和DataOutput两个接口,所以既可以用来处理文件的输入,又可以处理文件的输出。 主要方法: public RandomAccessFile(String name,String mode)构造RandomAccessFile流对文件进行读写。name为文件名, mode为读写模式,包括r(只读)rw(可读写).,public RandomAccessFile(File name,String mode)构造RandomAccessFile流对文件对象进行读写。name为文件名, mode为读写模式,包括r(只读)rw(可读写). close( )关闭RandomAccessFile流,并释放资源。 getFilePointer()返回文件指针位置。 length()返回文件长度 read()从文件中读取一个字节的数据 readInt()从文件中读取一个int值(4个字节) readLine()读取一行 seek(long pos)定位参数pos在文件中指定的位置,skipBytes():在文件中跳过指定数量的字节,数量由n指定。 writeChars(String s):向文件写入一个作为字符数据的字符串。 writeInt():向文件写入一个int型数据。,Java实例:,将一组数据写入到名为test.dat的文件中,然后再按相反顺序读出这些数据。 import java.io.*; public class Io public static void main(String args) RandomAccessFile test=null; int data=100,101,102,103,104,105; try test=new RandomAccessFile(“test.dat“,“rw“); catch(Exception e),try for(int i=0;i=0;i=i-4) test.seek(i); System.out.println(test.readInt(); test.close(); catch(Exception e) ,Reader类,Reader子类的继承关系,Reader BufferedReader(缓冲功能的字符输入类) InputStreamReader(输入字节转换为字符) FileReader (从文件读入字符),Reader类的method,public abstract void close()throws IOException 关闭数据流 public int read()throws IOException 从输入数据流读取下一个字节并返回返回值的范围从到,但如果已经到达数据流的结尾,没有数据可以读取了,则会返回 public int read(char cbuf) throws IOException 从数据流读取数个字符放进数组cbuf中,并返回所读取到的字符数目,最多可读取和cbuf长度相同的字符数,如果没有读取到则返回-1.这个method会一直等待直到读取到字符产生IOException或数据读完为止,Reader类的method,public long skip(long n)throws IOException 略过n个字节不读取,会返回实际略过的字节数目因为数据流中剩下的数据可能不到n个字节那么多,所以此时返回值会小于n public boolean ready()throws IOException 检查数据流是否已经准备好要被读取,是则返回 true,否则返回false如果返回值是true则紧跟着的read指令将不会受到阻碍,Writer类,Writer类的实现: public abstract class Writer extends Object Writer子类的继承关系 Writer PrintWriter (格式化输出功能) BufferedWriter(缓冲功能) OutputStreamWriter (字符字节转换) FileWriter (向文件读入字符),Writer类的method,public abstract void close()throws IOException 关闭与输出数据流的连接,但关闭之前会先调用一次flush method.如果程序结束前没有调用这个method则写入的数据可能会流失调 public abstract void flush()throws IOEception 将写入的数据确实送到收据的装置去 public void write(char cbuf) 将cbuf数组中的字符一一 写入输出数据流,Writer类的method,public void write(char cbuf,int off,int len) 将cbuf数组中从第off个字符开始,共写入len个字符到输出数据流 public void write(String str) 写入一个字符串到输出数据流,二、标准输入输出,Java系统预先定义好3个流对象分别表示标准输出设备、标准输入设备和标准错误设备,它们分别是System.out,System.in和System.err。 System.out是它的一个静态属性,属于PrintStream类对象,用于输出字节数据流,对应标准输出设备:屏幕。 System.in 也是System的一个静态属性,属于InputStream类对象,用于输入字节数据流,对应标准输入设备:键盘。 System.err 也是System的一个静态属性,属于PrintStream类对象,用于系统错误信息的输出,对应屏幕。,Java实例标准输入,import java.io.*; public class StandardIn1 public static void main(String args) throws IOException char c; System.out.println(“ 输入一个字符“); c=(char)System.in.read(); System.out.print( “输入的字符是:“+c); ,Java实例例10-3输入字符串,可以利用BufferedReader类的readLine()方法从键盘输入字符串,该方法一次读入一行字符串,即按回车键前面输入的所有字符,同时具备缓冲功能,提高运行效率。 输入字节转化为字符具有缓冲功能的输入字符 InputStream(System.in) InputStreamReader(iin) BufferedReader(bin),Java实例,Import java.io.*; Public class Standardin3 public static void main(String args) throws IOException InputStreamReader iin=new InputStreamReader(System.in); BufferedReader bin=new BufferedReader(iin); String s; float f; int i; Boolean b; System.out.println(“请输入任一字符串”); S=bin.readLine(); System.out.println(“请输入浮点数”); f=Float.parseFloat(bin.readLine(); System.out.println(“输入整数”); i=Integer.parseInt(bin.readLine(); System.out.println(“输入布尔变量”); b=new Boolean(bin.readLine().booleanValue(); System.out.println(“输入的字符串:”); System.out.println(“输入的浮点数:”+f); System.out.println(“输入的整数:”+i); System.out.println(“输入的布尔变量:”+b); ,标准输出,Java的标准输入设备:显示器用System.out表示,System.out属于PrintStream类对象。 利用PrintStream类的print()或println()方法可以非常方便地输出各类数据,这两个方法的唯一区别是print()输出后不换行,而println()方法输出完毕后要换行 。,三、文件操作,在程序中要对磁盘文件或目录进行操作,首先要对文件或目录建立连接,为此Java提供了File类。File类也位于java.io包中,但不是流类,而是专门用来管理磁盘文件和目录。 一个File类对象表示一个磁盘文件或目录,其对象属性中包含了文件或目录的相关信息,如名称、长度、所含文件个数等,其方法可以完成对文件或目录的常用管理操作,如创建、删除等。,File类,File类提供了3个不同的构造方法 : File(String path) String类参数path指定所建对象对应的磁盘文件名或目录名及其路径名。 File(String path, String name) 此构造方法中的参数path表示文件或目录的路径,参数name表示文件或目录名。 File(File dir, String name) 此构造方法中的参数dir表示一个磁盘目录对应的File对象,参数name表示文件名或目录名。,File类主要方法,public String getName():得到文件的名字 public String getPath():得到文件的路径名 public boolean exists():判断文件或目录是否存在 public long length():返回文件的字节数 public boolean canRead():返回当前文件是否可写 public boolean canWrite():返回当前文件是否可读 public boolean equals(File file):比较文件或目录 public boolean isFile():检测是否是文件 public boolean isDirectiry():检测是否是目录 public boolean renameTo(File file):重命名文件 public void delete():删除文件,FileOutputStream类流,FileOutputStream流类的构造方法有两个: FileOutputStream(String fileName): 参数fileName表示带路径的磁盘文件名。 FileOutputStream(File file): 参数file表示为磁盘文件所建立的File对象名,Java实例FileOutputStream,import java.io.*; public class File2 public static void main(String args) throws IOException char ch; File file1=new File(“c:jdk1.3examplenewFile.txt“); try FileOutputStream fout= new FileOutputStream(file1); System.out.println(“输入任一字符串,以?结束“); ch= (char) System.in.read(); while (ch !=?) fout.write(ch); ch=(char) System.in.read(); fout.close(); catch (FileNotFoundException e) System.out.println(e); catch (IOException e) System.out.println(e); ,FileInputStream类流,FileInputStream流类的构造方法有两个: FileInputStream(String fileName): 参数fileName表示带路径的磁盘文件名。 FileInputStream(File file): 参数file表示为磁盘文件所建立的File对象名 。,Java实例FileInputStream,import java.io.*; public class File3 public static void main(String args) throws IOException int ch; File file1=new File(“c:jdk1.3examplenewFile.txt“); try FileInputStream fin= new FileInputStream(file1); System.out.println(“文件中的信息为:“); ch= fin.read(); while (ch !=-1) System.out.print(char)ch); ch =fin.read(); fin.close(); catch (FileNotFoundException e) System.out.println(e); catch (IOException e) System.out.println(e); ,DataOutputStream类流,使用DataOutputStream类向文件中写入各种类型数据的操作步骤是: 为磁盘文件建立File类对象; 为该File对象建立FileOutputStream类流对象,建立其与磁盘文件的连接; 为该FileOutputStream类对象建立DataOutputStream类对象,利用DataOutputStream类的writeInt(),writeFloat(),writeDouble(),writeBoolean()等方法分别向文件中写入整型、单精度型、双精度型、布尔型等数据; 写入操作完成后,利用close()方法将流关闭,断开与磁盘文件的联系。,Java实例DataOutputStream,import java.io.*; public class File4 public static void main(String args) int ch; InputStreamReader iin=new InputStreamReader(System.in); BufferedReader bin =new BufferedReader(iin); File file1=new File(“c:jdk1.3exampledataFile.txt“); try FileOutputStream fout= new FileOutputStream(file1); DataOutputStream dout =new DataOutputStream(fout); System.out.println(“ 输入整数“); int i=Integer.parseInt(bin.readLine(); System.out.println(“ 输入浮点数“);,Java实例(续),float f=Float.parseFloat(bin.readLine(); System.out.println(“ 输入布尔量“); boolean b=new Boolean(bin.readLine().booleanValue(); dout.writeInt(i); dout.writeFloat(f); dout.writeBoolean(b); dout.close(); catch (FileNotFoundException e) System.out.println(e); catch (IOException e) System.out.println(e); ,从磁盘文件中读入各类数据 本程序的功能是将磁盘文件dataFile.txt中保存的各类数据复制到磁盘文件outFile.txt中,DataInputStream类流,Import java.io.*; public class File5 public static void main(String args) throws IOException int ch; File file1=new File(“c:dataFile.txt”); File file2=new File(“c:outFile.txt”); try FileInputStream fin=new FileInputStream(file1); DataInputStream din=new DataInputStream(fin); int i=din.readInt( ); float f=din.readFloat(); boolean b=din.readBoolean(); din.close(); FileOutputStream fout=new FileOutputStream(file2); DataOutputStream dout=new DataOutputStream(fout);,Java实例DataInputStream,Java实例(续),dout.writeInt(i); dout.writeFloat(f); dout.writeBoolean(b); dout.close(); System.out.println(“整数:”+ i); System.out.println(“浮点数:”+f); System.out.println(“布尔量:”+b); Catch(FileNotFoundException e) System.out.println(e); Catch(IOException e) ystem.out.println(e); ,Writer和Reader,以字符流方式向文件写入或从文件中读取数据,可以使用Writer和Reader类及其子类。 Writer和Reader类都是抽象类,不能建立它们
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年上半年幼儿园后勤工作计划
- 荆州初三上期末数学试卷
- 机电安装工程质量保证关键措施
- 幼儿园食品安全标准执行计划
- 黄冈二年级数学试卷
- 带货直播奢侈品推广脚本范文
- 酒店管理个人求职简历范文
- 住宅楼加装电梯审批报备流程他
- 2025年七年级下册班主任班级创新活动计划
- 初中道德与法治学科教学策略优化计划
- 幼儿园3-6岁儿童学习与发展指南测试题及答案
- 审计服务保障方案(3篇)
- HY/T 0457-2024蓝碳生态系统碳储量调查与评估技术规程海草床
- 护理值班和交接班制度
- 浙江台州市2024-2025学年高二下学期6月期末英语(含答案)
- 2025年广西中考英语真题含答案
- 化妆品中试平台建设的可持续发展策略与创新应用
- 英语(浙江卷A卷)-2023年高考第二模拟考试卷()
- 2025年时事政治考试题及参考答案(100题)
- 动火作业安全管理制度
- 牛奶产品的营销方案
评论
0/150
提交评论