java基础-io流课件
HandsOnI/O 处理1HandsOn目标l运用File类进行文件操作l理解流,标准输入/输出流的概念l运用FileInputStream和FileOutputStream类 读写文本文件l运用BufferedReader和BufferedWriter类读写 文本文件l运用ObjectInputStream和 ObjectOutputStream类读写对象2HandsOn文件 3-1l什么是文件?文件可认为是相关记录或放在一起的数 据的集合l文件一般存储在哪里?lJAVA程序一般通过什么去访问文件属 性? JAVA API :java.io.File 类3HandsOn文件 3-2File 类物理文件或目录构造文件对象操作文件或目录的属性 (路径、权限、日期和时间等 ) 例子:FileTest.java4HandsOn流 3-1l流是指一连串流动的字符,是以先进先出 方式发送信息的通道InputStreamOutputStream来自数据源的数据流流向目的地的数据流AECDBF5HandsOn流 3-26HandsOn流 3-3lJava流的分类ü字节流8 位 InputStream OutputStreamü字符流16 位 UnicodeReader Writer7HandsOn文件的读写l文本文件的读写Ø用FileInputStream读文本文件Ø用FileOutputStream写文本文件Ø用BufferedReader读文本文件Ø用BufferedWriter写文本文件8HandsOn用FileInputStream 读文本文件3-1l引入相关的类import java.io.IOException;import java.io.InputStream;import java.io.FileInputStream;l构造一个文件输入流对象InputStream fileobject = new FileInputStream(“text.txt”);9HandsOn用FileInputStream 读文本文件3-2l利用文件输入流类的方法读取文本文件的 数据 fileobject.available(); /可读取的字节数fileobject.read(); /读取文件的数据 l关闭文件输入流对象fileobject.close();l例子:FileInputStreamTest.java10HandsOn用FileOutputStream 写文本文件3-1l引入相关的类import java.io.IOException;import java.io.OutputStream;import java.io.FileOutputStream;l构造一个文件输出流对象OutputStream fos = new FileOutputStream(“Text.txt“);11HandsOn用FileOutputStream 写文本文件3-2l利用文件输出流的方法写文本文件 String str =“好好学习Java“;byte words = str.getBytes();fos.write(words, 0, words.length); l关闭文件输出流fos.close(); l例子:FileOutputStreamTest.java12HandsOn用BufferedReader 读文本文件 3-1l引入相关的类import java.io.FileReader;import java.io.BufferedReader;import java.io.IOException;l构造一个BufferedReader对象FileReader fr=new FileReader(“mytest.txt“); BufferedReader br=new BufferedReader(fr); 13HandsOn用BufferedReader 读文本文件 3-2l利用BufferedReader的方法读取文本文 件的数据br.readLine(); /读取一行数据,返 回字符串l关闭相关的流对象br.close();fr.close();l例子:BufferedReaderTest.java14HandsOn用BufferedWriter 写文本文件 3-1l引入相关的类import java.io.FileWriter ;import java.io.BufferedWriter ;import java.io.IOException;l构造一个BufferedWriter对象FileWriter fw=new FileWriter(“mytest.txt“);BufferedWriter bw=new BufferedWriter(fw);15HandsOn用BufferedWriter 写文本文件 3-2l利用BufferedWriter的方法写文本文件bw.write (“hello”); l相关流对象的清空和关闭bw.flush();fw.close();l例子:BufferedWriterTest.java16HandsOn用DataInputStream 读二进制文件l引入相关的类import java.io.FileInputStream; import java.io.DataInputStream;l构造一个数据输入流对象FileInputStream fis = new FileInputStream(“HelloWorld.class”);DataInputStream dis = new DataInputStream(fis);l利用数据输入流类的方法读取二进制文件的数据dis.readInt(); / 读取出来的是整数dis.readByte(); / 读取出来的数据是Byte类型 l数据输入流的关闭dis.close (); /关闭数据输入流 17HandsOn用DataOutputStream 写二进制文件l引入相关的类import java.io. FileOutputStream; import java.io. DataOutputStream;l构造一个数据输出流对象FileOutputStream outFile = new FileOutputStream(“temp.class“);DataOutputStream out = new DataOutputStream(outFile);l利用文件输出流类的方法写二进制文件out.writeByte(1); /把数据写入二进制文件 l数据输出流的关闭out.close();l例子:ReadAndWriteBinaryFile.java18HandsOn系统的输入与输出lSystem.out = 系统的监视器(显示器)lSystem.in = 系统的输入(键盘)l具体使用:ØInputStreamReader isr=new InputStreamReader(System.in);ØBfferedReader br=new BufferedReader(isr);Øbr.readLine();19HandsOn对象流lObjectInputStreamlObjectOutputStreaml步骤:Ø先构建基础流Ø再封装对象流l例子:WriteOb.java ReadOb.java20HandsOn建立对象写入流l引入相关的类import java.io. FileOutputStream; import java.io. ObjectOutputStream;l构造一个数据输出流对象FileOutputStream outFile = new FileOutputStream(“obj.dat“);ObjectOutputStream oos= new ObjectOutputStream (outFile);l利用文件输出流类的方法写二进制文件OOS.writeObject(obj); /把数据写入二进制文件 l数据输出流的关闭OOS.close();l例子:WriteOb.java21HandsOn建立对象读取流l引入相关的类import java.io.FileInputStream; import java.io.ObjectInputStream;l构造一个数据输入流对象FileInputStream fis = new FileInputStream(“HelloWorld.class”);ObjectInputStream ois = new ObjectInputStream(fis);l利用数据输入流类的方法读取二进制文件的数据ois.readObject(); l数据输入流的关闭ois.close (); /关闭数据输入流 22HandsOn作业l把键盘输入的内容写入到文本文件中,按以 下格式23HandsOnl设计一个类读取用户输入的文本行并对文 本行进行编码,然后输出编码的文本行,编 码要求:将字母表中的每个字母用其后第 13 个位置的字母代替.l将一个文件的内容装换为大写,显示出来 ,并把内容复制到文件中去。24