输入流与输出流.ppt_第1页
输入流与输出流.ppt_第2页
输入流与输出流.ppt_第3页
输入流与输出流.ppt_第4页
输入流与输出流.ppt_第5页
已阅读5页,还剩55页未读 继续免费阅读

VIP免费下载

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

文档简介

第八章 输入与输出流,1. 从键盘上接收数据,输出到屏幕上。或者把键盘上接收的数据输出到 数据文件中。 2.从数据文件读取数据,输出到屏幕上。或者把从一个数据文件的读取的数据输出到另一个数据文件中。(介绍数据文件的内容及产生过程。何谓读取和写入) 3.把正在运行的java程序所产生的数据输出到屏幕上,或写入到一个数据文件中。,程序,键盘,数据文件,数据文件,屏幕,第八章 输入与输出流,综上所述,程序是数据处理中心。 无论是从键盘上读取数据或者从数据文件中读取数据都是由程序决定的。 把程序中的数据输出到屏幕上或者输出到数据文件中都是由程序决定的。,程序,键盘,数据文件,数据文件,屏幕,8.1 流的概念 输入与输出流(I/O流) (1)输入流:把键盘上输入的数据或者是把数据文件中的数据 读入正在运行的程序中。(网络) (2)输出流:把正在运行的程序中的数据输出到屏幕上或者 输出到数据文件中。,第八章 输入与输出流,输入流,输出流,8.1 流的概念 注意:输入与输出过程中,数据的流动称为输入与输出流。 输入流:键盘或数据文件是数据源,而运行的程序数据流动的目的地。 输出流:运行的程序是数据源,而屏幕或数据文件是数据流动的目的地。 Java所有的输入与输出操作都要通过I/O包中的一些流类来实现。 字节流 输入流或输出流以字节作为特定的处理单位。 字符流 输入流或输出流以字符作为特定的处理单位。,第八章 输入与输出流,不论数据从哪里来,到哪里去。读或写数据的步骤和方法大体上都是一样的: 进行读操作意味着需要建立输入流的数据源。数据源是键盘或者是文件,输入流的目的地一定是正在运行的程序中。 进行写操作意味着需要建立输出流的目的地。目的地是屏幕或者是数据文件,输出流的数据源一定是正在运行的程序产生的数据。,第八章 输入与输出流,8.1 流的概念 字符流类:专门用于字符数据 字节流类:用于一般目的,第八章 输入与输出流,10.1 File类,首先讨论10.1.3节的内容,如何使用File类创建对象。对象可以是文件对象,也可以是目录对象。 (1) 使用一个存在的文件创建一个文件对象;10.1.3 File f=new File(“Example10_1.java“); 当前目录下已经存在文件: Example10_1.java 这时引用变量可以使用10.1.1节中提供的对文件操作方法。 例如: f.getName() 获得文件的名称等。例题10.1 (2) 使用一个不存在的文件名创建一个文件对象 10.1.3 File f = new File(“new.txt“); 当前目录下已经不存在文件: new.txt 这时必须使用 f.createNewFile(); 才能在当前目录下创建指定的文件。 然后引用变量可以使用10.1.1节中提供的对文件操作方法。 例如: f.getName() 获得文件的名称等。例题10.1,第八章 输入与输出流,10.1.1 使用File类的方法获取文件的属性 public String getName() 获取文件的名字。 public boolean canRead() 判断文件是否是可读的。 public boolean canWrite() 判断文件是否可被写入。 public boolean exits() 判断文件是否存在。 public long length() 获取文件的长度(单位是字节)。 public String getAbsolutePath() 获取文件的绝对路径。 public String getParent() 获取文件的父目录。 public boolean isFile() 判断文件是否是一个普通文件,而不是目录。 public boolean isDirectroy() 判断文件是否是一个目录。 public boolean isHidden() 判断文件是否是隐藏文件。 public long lastModified() 获取文件最后修改的时间。 例题:10.1,第八章 输入与输出流,10.1.2 目录 用File 类还可以创建目录对象。 目录可以是一个已经存在的目录,也可以是一个不存在的目录。 (1) File dir=new File(“.“); 创建一个目录对象,该对象表示当前目录。 File dir=new File(“c:tt“); 若c盘的根目录下存在子目录tt 即:c:tt 上述语句执行后,将创建一个目录对象dir表示c:tt (4) File dir=new File(“c:ss“); 若c盘的根目录下不存在子目录ss 即:c:ss 必须执行语句: dir.mkdir(); 才能创建目录c:ss 这样目录对象dir表示c:ss 例题: 文件输入与输出 Example10_1_1.java,第八章 输入与输出流,10.1.2 目录 当目录对象指向已经存在的目录。可以使用下列方法列出目录中的文件: public String list() 用字符串形式返回目录下的全部文件。 public File listFiles() 用File对象形式返回目录下的全部文件。 public String list(FilenameFilter obj) 用字符串形式返回目录下的指定类型的所有文件。 public File listFiles(FilenameFilter obj) 用File对象形式返回目录下的指定类型所有文件。 上述两方法的参数FilenameFilter是一个接口,该接口有一个方法: public boolean accept(File dir,String name); 例题: 文件输入与输出 Example10_1_1.java Example10_2.java,第八章 输入与输出流,10.1.4 使用Runtime 类运行可执行文件 用Runtime 类声明一个对象( Runtime类在java.lang包) Runtime ec; 然后使用该类的getRuntime()静态方法创建这个对象: ec=Runtime.getRuntime(); ec可以调用exec(String command)方法打开本地机的可执行文件或执行一个操作。 项目:可执行文件 Example10_3.java,第八章 输入与输出流,10.3 - 10.4 文件字节流与文件字符流 java.io包提供了大量的流类: InputStream抽象类的子类创建的流对象称作字节输入流对象; OutputStream抽象类的子类创建的流对象称作字节输出流对象; read方法的格式如下: public void read(byte b); public void read(byte b,int off,int len); write方法的格式如下: public void write(byte b); public void write(byte b,int off,int len); 作为字节流输入对象的文件,采用read方法按字节读入到程序中; 作为字节流输出对象的文件,采用write方法按字节把程序的数据输出到字节流输出对象的文件中;,第八章 输入与输出流,10.3 - 10.4 文件字节流与文件字符流 java.io包提供了大量的流类: Reader抽象类的子类创建的流对象称作字符输入流对象; Writer抽象类的子类创建的流对象称作字符输出流对象。 read方法的格式如下: public void read(char b); public void read(char b,int off,int len); write方法的格式如下: public void write(char b); public void write(char b,int off,int len); 作为字符流输入对象的文件,采用read方法按字符读入到程序中; 作为字符流输出对象的文件,采用write方法按字符把程序的数据输出到字符流输出对象的文件中;,第八章 输入与输出流,10.5 缓冲流 Reader抽象类的子类创建的流对象与BufferedReader类结合使用后,创建的对象称作缓冲输入流对象,可以采用如下方法: readLine() BufferedReader流对象从文件中读取文本行; Writer抽象类的子类创建的流对象和BufferedWriter类结合使用后,创建的对象称作缓冲输出流对象,可以采用如下方法: write(String s,int off,int len) /BufferedWriter流对象把字符串s写到文件中。 newLine(); /BufferedWriter流对象向文件写入一个回行符。,第八章 输入与输出流,10.6 随机流 使用RandomAccessFile类来创建一个随机访问文件流。 RandomAccessFile类创建的流的指向既可以作为源也可以作为目的地。 构造方法: RandomAccessFile(String name,String mode) ; RandomAccessFile(File file,String mode) ; 相关方法: seek(long a) 定位RandomAccessFile流的读写位置 getFilePointer() 获取流的当前读写位置 writeInt(int xi) writeFloat(float xi) /写入随机文件中 readInt() readFloat () / 从随机文件中读取数据 readLine() 若读入数据时,按字符串读入数据,可以按行读入字符串。可能出现乱码,对字符串对象使用重新编码语句: byte b=str.gerByte(“iso-8859-1”);/重新编码后的字符串存入字节数组中 str=new String(b); / 然后转换为字符串对象。,第八章 输入与输出流,10.7 数组流 这节内容是:如何把程序中的一个字节数组中的数据或一个字符数组中的数据写入缓 冲区中;还有,把存放在缓冲区中的数据读入一个字节数组中的数据或一个字符数组中。 1字节数组流 字节数组输出流ByteArrayOutputStream类可以使用下列构造方法 创建对象: ByteArrayOutputStream() /将在内存中开辟默认为32字节的缓冲区。 ByteArrayOutputStream(int size) /将在内存中开辟指定字节的缓冲区。 例如: ByteArrayOutputStream outByte = new ByteArrayOutputStream(); 把要输出到缓冲区的数据放入一个字节数组中,然后调用下列方法: write(byte b); 将字节数组中的数据存入缓冲区中。 例如: byte byteContent = “国庆60周年“.getBytes(); outByte.write(byteContent);,第八章 输入与输出流,10.7 数组流 1字节数组流 字节数组输入流ByteArrayInputStream类可以使用下列构造方法创建对象: ByteArrayInputStream(byte buf);/形参是一个字节数组,代表一个已经存在的缓冲区。 /指定要读入数据的缓冲区。当前内存中可能有若干个缓冲区。 例如: ByteArrayInputStream inByte = new ByteArrayInputStream(outByte.toByteArray(); /outByte.toByteArray() 是一个字节数组,代表一个已经存在的缓冲区。该字节数组存放了缓冲区所有数据。 public int read(); /顺序地从缓冲区中读出一个字节 public int read(byte b,int off,int len); /顺序地从源中读出参数len指定的字节数 例如: byte backByte = new byteoutByte.toByteArray().length; inByte.read(backByte); /把缓冲区中的数据读入字节数组backByte中,第八章 输入与输出流,10.7 数组流 2字符数组流 字符数组输出流CharArrayWriter类可以使用下列构造方法 创建对象: CharArrayWriter() /将在内存中开辟默认为32字节的缓冲区。 例如: CharArrayWriter outChar = new CharArrayWriter(); 把要输出到缓冲区的数据放入一个字符数组中,然后调用下列方法: write(char b); 将字符数组中的数据存入缓冲区中。 例如: char charContent = “中秋快乐“.toCharArray(); outChar.write(charContent);,第八章 输入与输出流,10.7 数组流 2字符数组流 字符数组输入流CharArrayReader类可以使用下列构造方法创建对象: CharArrayReader(char buf);/形参是一个字符数组,代表一个已经存在的缓冲区。指定要读入数 /据的缓冲区。当前内存中可能有若干个缓冲区。 例如: CharArrayReader inChar = new CharArrayReader(outChar.toCharArray(); /outByte.toCharArray() 是一个字符数组,代表一个已经存在的缓冲区。该字符数组存放了缓冲区所有数据。 public char read(char w); /顺序地从缓冲区中读入数据到字符数组w中。 例如: char backchar = new charoutByte.toCharArray().length; inChar.read(backchar); /把缓冲区中的数据读入字符数组backchar中。,第八章 输入与输出流,10.8 数据流 FileOutputStream类和DataOutputStream类配合使用,把程序中的数据写入数据文件更加方便。 例如: File file = new File(“apple.txt“); FileOutputStream fos = new FileOutputStream(file); DataOutputStream outData = new DataOutputStream(fos); 可以调用DataOutputStream类中的相关方法: 例如: outData.writeInt(100); outData.writeLong(123456); outData.writeFloat(3.1415926f); outData.writeDouble(987654321.1234); outData.writeBoolean(true); outData.writeChars(“How are you doing “);,第八章 输入与输出流,10.8 数据流 FileInputStream类和DataInputStream类配合使用,把数据文件中的数据读入程序中更加方便。 例如: File file = new File(“apple.txt“); FileInputStream fis = new FileInputStream(file); DataInputStream inData = new DataInputStream(fis); 可以调用DataInputStream类中的相关方法: 例如: System.out.println(inData.readInt(); / 读取int数据 System.out.println(inData.readLong(); / 读取long数据 System.out.println(+inData.readFloat(); / 读取float数据 System.out.println(inData.readDouble(); / 读取double数据 System.out.println(inData.readBoolean();/ 读取boolean数据 char c; while (c = inData.readChar() != 0) / 读取字符数据,采用循环结构。0表示空字符。 System.out.print(c); ,第八章 输入与输出流,10.9 对象流 FileOutputStream类和ObjectOutputStream类配合使用,把程序中的一组对象数据写入数据文件。 例如: File file = new File(“television.txt“); FileInputStream fileIn=new FileInputStream(file); ObjectInputStream objectIn=new ObjectInputStream(fileIn); 可以调用ObjectInputStream类中的相关方法: 例如: TV xinfei=(TV)objectIn.readObject(); objectIn.close(); 注意:从数据文件读回的对象是输入数据文件的对象的一个克隆对象。,第八章 输入与输出流,10.9 对象流 FileInputStream类和ObjectInputStream类配合使用,把数据文件中的一组对象读入程序中。 例如: File file = new File(“apple.txt“); FileInputStream fis = new FileInputStream(file); DataInputStream inData = new DataInputStream(fis); 可以调用DataInputStream类中的相关方法: 例如: System.out.println(inData.readInt(); / 读取int数据 System.out.println(inData.readLong(); / 读取long数据 System.out.println(+inData.readFloat(); / 读取float数据 System.out.println(inData.readDouble(); / 读取double数据 System.out.println(inData.readBoolean();/ 读取boolean数据 char c; while (c = inData.readChar() != 0) / 读取字符数据,采用循环结构。0表示空字符。 System.out.print(c); ,第八章 输入与输出流,字节流类:用于一般目的。输入流或输出流以字节作为特定的处理单位。 字节流类是由一组具有继承关系的类组成。其中InputStream类是输入流的父 类。OutStream类是输出流的父类。 如图所示: 由于程序对数据处理过程中的需要,可以使用一个字节或若干个字节组合为单位进行输入或输出。 通常采用若干个不同的字节流类的组合来实现不同需求的数据处理过程。,第八章 输入与输出流,8.2 字节流类 在这一节中,所有的输入与输出操作都要通过I/O包中的一些字节流类来实现。 8.2.1 字节输入流类 通过使用以上一组字节输入流类,可以把键盘上输入的数据或把数据文件中存放的数据读入到程序中。读入的数据流都是以字节为特定单位。,图:8-1,第八章 输入与输出流,8.2.2 字节输出流类 字节输出流类的作用就是将暂存在计算机内存中的数据输出到屏幕或数据文件 中。在编写应用程序时,常常需要多个字节输出流类的子类组合,才能够实现需要 的若干个字节输出功能。图8-2是字节输出流的类层次关系。,图8-2 字节输出流的类层次关系,第八章 输入与输出流,1.从键盘上接收数据,并输出到屏幕上。当然也可以把键盘上接收的数据输出到 数据文件中。 ) 每次从缓冲区读取一个字节数据存入字节数组,然后输出到屏幕上。 字节流举例 ,由字节输入流的子类对象System.in实现从键盘上 读入数据。 IOKeybord.java )一次性从缓冲区读取所有数据存入字节数组,然后把字节数组中的数据转换 为字符串后输出到屏幕上。 例题:8_1例题.jpx )从缓冲区读取所有的数据存入到一个字符串变量中,输出到屏幕上。 字符流举例.jpx,第八章 输入与输出流,IOKeybord.java a) InputStream in = System.in; 创建数据源 b) while ( (w =in.read() ) != n) tomi=(byte)w; 每次从缓冲区读取一个字节数据存入整型变量w,然后整型变量w存入一个字节数组中,最后把输出到屏幕上。 c) in.close() ;,【例 8-1】从键盘上输入数据到正在运行的程序,并显示到屏幕上。 System.in 代表键盘,是InputStream类的子类对象。 (1)打开一个输入数据源:从键盘上读入数据意味着它是数据源,必须使用System.in。 可以使用图8-1中若干个不同的类的组合来打开一个数据源。 使用DataInputStream类可以在读入数据时,统计读入的字节数。 使用BufferedInputStream类可以创建输入缓冲区,提高读入速度。 使用若干个不同的类的组合来打开一个输入流,可以采用如下:嵌套组合方式。 BufferedInputStream bufin = new BufferedInputStream(new DataInputStream (System.in); 作为创建输入缓冲区BufferedInputStream类一定放在最外层, System.in放在最里层。,第八章 输入与输出流,【例 8-1】从键盘上输入数据到正在运行的程序,并显示到屏幕上。 也可以采用书上的组合方式: DataInputStream stdin = new DataInputStream(System.in); BufferedInputStream bufin = new BufferedInputStream(stdin); (2) 读信息: int count=0; byte input =new byte256; count = bufin.read(input); 从键盘上读入的数据存放于字节数组input中, bufin.read(input)的返回值是读入的字节数。,第八章 输入与输出流,【例 8-1】从键盘上输入数据到正在运行的程序,并显示到屏幕上。 (2) 关闭流: 清除bufin对象,释放内存空间。 bufin.close();,第八章 输入与输出流,【例 8-1】从键盘上输入数据到正在运行的程序,并显示到屏幕上。 import java.io.*; / 引入输入/输出程序包 public class GetInputStream public static void main(String args) int count; / 定义读入字符数的变量 byte input = new byte256; / 定义存放字节数据的数组 String InputString; DataInputStream stdin = new DataInputStream(System.in); BufferedInputStream bufin = new BufferedInputStream(stdin); try ,第八章 输入与输出流,【例 8-1】从键盘上输入数据到正在运行的程序,并显示到屏幕上。 System.out.print(“请输入字符串,结束请按Enter.n“ + “= “); count = bufin.read(input); System.out.println(“读入的字符数目: “ + count); InputString = new String(input,0,count); System.out.print(“输入的字符串为: “ + InputString); stdin.close(); bufin.close(); catch(IOException e) System.out.println(“发生I/O异常!“); ,第八章 输入与输出流,【例 8-1】从键盘上输入数据到正在运行的程序,并显示到屏幕上。 执行语句: count = bufin.read(input); 由于缓冲区为空,计算机停下来等待用户从键盘上输入数据。用户从键盘输入若干个字符后,回车。 计算机把用户输入的字符和系统自动添加的“回车字符 ”送入缓冲区中,该语句从缓冲区中一次性读入所有数据,包括“回车字符 ”。 (java 语言中,每个字符用两个字节表示)。,第八章 输入与输出流,第八章 输入与输出流,2. 实现文件的拷贝。从一个数据文件中读取数据,每次读取若干个字节数据存入字节数组中。然后把字节数组中的数据存入另一个数据文件中。 作为源数据文件可以是各种各样的文件。例如是 .txt类型 、.ppt类型的文件。源数据文件中存放的数据可以是各种数据类型的数据。例如是 字符型数据、图片型数据。 作为目标数据文件中存放的数据形式与源文件相同。 用字节输入流中的子类FileInputStream和字节输出流中的子类FileOutputStream 实现。 a) FileInputStream in=new FileInputStream(“ccc.ppt“); b) while(b=in.read(tom,0,18)!=-1 ) ; c) in.close() ; Example12_4.java,第八章 输入与输出流,a) FileOutputStream out=new FileOutputStream(“ddd.ppt“); b) out.write(tom,0,tom.length ); c) out.close() ; 3.把运行中程序的暂存数据存入数据文件中。运行中程序产生了若干个整型数据和若干个双精度类型数据,把这些数据存入数据文件中。 需要字节输出流中的子类DataOutputStream和FileOutputStream组合来完成。 Ex6_7.java a) DataOutputStream out = new DataOutputStream( new FileOutputStream(fileName); b) out.writeInt(value0); out.writeFloat(123.45f) ; c) out.close();,第八章 输入与输出流,为了提高输出速度,还可以用DataOutputStream、BufferedOutputStream和FileOutputStream 三个类的组合来完成。 Ex6_8.java a) DataOutputStream dataOut = new DataOutputStream( new BufferedOutputStream( new FileOutputStream(fileName); b) dataOut.writeBytes(“中国“); c) dataOut.close(); 4. 把数据文件data1.txt中的三个整型数据读入到正在运行中程序来。 Ex6_10.java 需要字节输出流中的子类DataInputStream和FileInputStream组合来完成。 为了提高输出速度,还可以用DataInputStream、BufferedInputStream和FileInputStream 三个类的组合来完成。,第八章 输入与输出流,8.2.2 字节输出流类 字节输出流类的作用就是将暂存在计算机内存中的数据输出到屏幕或文件中。在编写应用程序时,常常需要多个字节输出流类的子类组合,才能够实现字节输出功能。图8-2是字节输出流的类层次关系。,图8-2 字节输出流的类层次关系,8.2.2 字节输出流类 【例8-2】接收键盘输入的内容,并通过字节输出流输出到屏幕上。 接收键盘输入的内容到程序中,需要若干个输入流类组合创建数据源。 在程序中的暂存数据输出到屏幕上,需要若干个输出流类组合创建数据目的地。 数据目的地是屏幕意味着必须使用:System.out 它是数据输出流对象,代表计算机屏幕。,第八章 输入与输出流,8.2.2 字节输出流类 【例8-2】用两种方式创建数据目的地,把程序中的暂存数据输出到屏幕上。 (1) DataOutputStream stdout = new DataOutputStream(System.out); BufferedOutputStream bufout = new BufferedOutputStream(stdout); bufout.write(input,0,count); / 写入位串流到缓冲区 bufout.flush(); / 强制输出缓冲区中的数据到屏幕 (2) PrintStream p = new PrintStream(System.out); p.print(“请输入字符串, 结束请按Enter.n” + “= ”); / 将位串直接输出到屏幕上。,第八章 输入与输出流,8.2.2 字节输出流类 【例8-2】接收键盘输入的内容,并通过字节输出流输出到屏幕上。 import java.io.*; public class GetOutputStream public static void main(String args) int count; byte input = new byte256; String InputString; DataInputStream stdin = new DataInputStream(System.in); BufferedInputStream bufin = new BufferedInputStream(stdin);,第八章 输入与输出流,8.2.2 字节输出流类 DataOutputStream stdout = new DataOutputStream(System.out); BufferedOutputStream bufout = new BufferedOutputStream(stdout); PrintStream p = new PrintStream(System.out); try p.print(“请输入字符串, 结束请按Enter.n“ + ”= “); count = bufin.read(input); p.println(“读入字符数: ” + count); p.print(“输入的字符串为: ”); bufout.write(input,0,count); / 写入位串流 bufout.flush(); / 强制输出,第八章 输入与输出流,8.2.2 字节输出流类 p.close(); / 关闭打印流 stdin.close(); / 关闭输入流 bufin.close(); / 释放输入缓冲区 stdout.close(); / 关闭输出流 bufout.close(); / 释放输出缓冲区 catch(IOException e) System.out.println(“发生I/O异常!“); 例题8_3.jpx 对数据文件进行输入和输出操作,第八章 输入与输出流,第八章 输入与输出流,8.3 字符流类 如果输入或输出的数据都是字符型数据或者可以转换为字符型的数据,那么输入和输出操作可以字符流类来完成。如果是图片、声音等数据,则不能用字符流类来完成。 8.3.1 字符输入流类,图8-3 字符输入流的类层次关系,8.3.1 字符输入流类 【例8-4】从键盘输入数据,完成一个简单的学生信息录入程序。 (1) 创建数据流数据源: InputStreamReader stdin=new InputStreamReader(System.in); BufferedReader BufIn=new BufferedReader(stdin); (2) 接收从键盘上输入的数据 String s1; int num; s1=BufIn.readLine(); Num=Integer.parseInt(s1); 或:num=Integer.parseInt(BufIn.readLine(); (3) BufIn.close();,第八章 输入与输出流,【例8-4】完成一个简单的学生信息录入程序。 import java.io.*; public class TestReader public static void main(String args) int Num; String Name , classes ; InputStreamReader stdin=new InputStreamReader(System.in); BufferedReader BufIn=new BufferedReader(stdin); try System.out.println(“=学生信息=”); System.out.print(“请输入学生的人数: “);,第八章 输入与输出流,/将读取的学生人数转换为整数 Num=Integer.parseInt(BufIn.readLine(); Name=new StringNum; classes=new StringNum; for(int i=0;iNum;i+) /完成学生信息的输入 System.out.println(i+1)+“号“); System.out.print(“姓名: “); Namei=BufIn.readLine(); /从键盘输入第i个学生姓名 System.out.print(“班级: “); /从键盘输入第i个班级名称 classesi=BufIn.readLine(); ,第八章 输入与输出流,System.out.println(“已完成学生信息输入!n“); System.out.println(“=学生信息显示=“); for(int i=0;iNum;i+) /完成学生信息的显示 System.out.print(i+1)+“号 ”); System.out.print(“姓名: ”+Namei); System.out.println(“ 班级: ”+classesi); stdin.close(); / 关闭输入流 BufIn.close(); / 释放缓冲区 catch(IOException e) System.out.println(“发生I/O异常!”); ,第八章 输入与输出流,第八章 输入与输出流,8.3.1 字符输出流类,图8-3 字符输出流的类层次关系,【Ex6_2】把若干个字符串写入文件中。如果文件不存在,新建一个文件。如果文件存在,用本次最新内容取代原内容。 a) FileWriter writer = new FileWriter(“c:/hello.txt”); b) writer.write(“qqq“) ; c) writer.close(); 【Ex6_2_1】从文本文件读入数据,每次读入若干个字符到正在运行的程序中。 a) FileReader in = new FileReader (“c:/hello.txt”); b) while(n=in.read(tom,0,30)!=-1 ) c) in.close();,第八章 输入与输出流,【Ex6_3】把若干个字符串写入指定文件中。文件一定存在,本次操作的写入内容放在指定文件的后边。 a) FileWriter writer = new FileWriter(“c:/hello.txt”,true); b) writer.write(“sss“) ; c) writer.close(); 【Ex6_4】把若干个字符串写入文件中。如果文件不存在,新建一个文件。如果文件存在,用本次最新内容取代原内容。 BufferedWriter类与FileWriter类联合使用,提高写入速度。 a) BufferedWriter out = new BufferedWriter(new FileWriter(“c:/hello.txt” ) ); b) out.write( “Hello!“ ); out.newLine() ; c) in.close();,第八章 输入与输出流,【Ex6_5】从文本文件读入数据,每次读入一行字符串到正在运行的程序中。 BufferedReader类与FileReader类联合使用,提高速度。 a) BufferedReader in = new BufferedReader(new FileReader(“c:/hello.txt”); b) String line; line = in.readLine(); /读取一行内容 while (line != null) System.out.println(line); line = in.readLine(); c) in.close();,第八章 输入与输出流,【Ex_RandomRW】写入到数据文件中数据可以由用户指定位置,从数据文件读入数据时,也可以由读入用户指定位置的数据。 随机文件.jpx。 a) RandomAccessFile raf = new RandomAccessFile(“c:/t.dat“, “rw“); b) for (int i = 0; i 10; i+) raf.writeDouble(i); /写入10个Double数值 c) in.close(); a) RandomAccessFile raf1 = new RandomAccessFile(“c:/t.dat“, “rw“); b) raf1.seek(3 * DOUBLE_SIZE); System.out.print(“t“ + raf1.readDouble(); raf1.writeDouble(300); c) in.close();,第八章 输入与输出流,【Ex_ObjectRW】将一组对象的实例变量的值存入数据文件,然后从该数据文件中取出一组对象的实例变量的值。 a) ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream(“

温馨提示

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

评论

0/150

提交评论