字符流和标准输入输出流

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

字符流与字节流的区别
• 字节流操作时本身不会用到缓冲区,是文件本身直接操作, 而字节流在操作时就使用到了缓冲区
如果我们在操作字符流的时候,不关闭流,我们写入的数据是无法保存的。 所以在操作字符流的时候一定要记得关闭流
标准输入输出流
• 为了减少程序开发人员,因频繁应用标准的输入输出设备,需要频 繁地建立输入输出流对象的工作量,java系统预先定义好3个流对象, 分别表示标准输出设备、标准输入设备和标准错误设备。他们分别 是:
– (3)若需要对字节或字符流信息组织加工为数据,在已建字节流或字 符流对象上构建数据流对象。
– (4)用输入输出流பைடு நூலகம்象类的成员方法进行读写操作。 – (5)关闭流对象。
字符流(Reader类和Writer类)
• 在程序中一个字符等于两个字节,Java为我 们提供了Reader和Writer两个专门操作字符 流的类。
用字节流写文件
FileOutputStream fout=null; try { fout = new FileOutputStream("e:\\t.txt"); fout.write('c'); fout.write("大家好".getBytes()); fout.flush(); }catch (FileNotFoundException ex) { ex.printStackTrace(); }catch (IOException ex) { ex.printStackTrace(); }finally{ try { fout.close(); } catch (IOException ex) { ex.printStackTrace(); } }
用字符流写文件
FileWriter fout=null; try { fout = new FileWriter("e:\\t.txt"); fout.write("你好"); } catch (IOException ex) { ex.printStackTrace(); } finally{ try { fout.close(); } catch (IOException ex) { ex.printStackTrace(); } }
System.out.println("输入的字符是 :"+c);
} }
• 如果你要保存的是一张图片或一首mp3,那么用
字节流比较合适,如果你要保存的是一段文字,
那么用字符流更合适。
用字节流读文件
FileInputStream fin=null; try { fin=new FileInputStream("e:\\t.txt"); //建立文件输入流 System.out.println(fin.available());//此方法何用?自己查文档 int i=fin.read(); while(i!=-1){ System.out.print((char)i); i=fin.read(); } } catch (IOException ex) { ex.printStackTrace(); }finally{ try { fin.close(); //关闭流 } catch (IOException ex) { ex.printStackTrace(); } }
Java输入输出处理——流
字符流、标准输入输出流
学习目标
• 理解流的概念和作用 • 理解字节流与字符流的异同 • 掌握常用的输入/输出流类读写文件的使用
输入输出流使用步骤
• 输入输出流操作的一般步骤如下: – (1)使用引入语句引入java.io包:import java.io.*; – (2)根据不同数据源和输入输出任务,建立字节流或字符流对象。
字符输入流:Reader
• Reader本身也是一个抽象类,同样,如果使 用它,我们需要通过其子类来实例化它才 可以使用它。 • Reader类的常用方法-----API方法
• • • • • • • • • • • • • • • • •
示例2:还是Helloworld 在上面的基础上把文本中的内容读出来,并且显示在控制台上 public static void main(String[] args) throws Exception { File file = new File("hellowolrd.txt"); // 声明一个File对象 Reader reader = null; // 声明一个Reader类的对象 reader = new FileReader(file); // 通过FileReader子类来实例化Reader 对象 char[] c = new char[1024]; // 声明一个字符数组 // // 将内容输出 // int len = reader.read(c); //循环方式一个一个读 int len=0; int temp=0; while((temp=reader.read())!=-1){ c[len]=(char)temp; len++; } reader.close(); // 关闭输入流 System.out.println(new String(c, 0, len)); // 把char数组转换成字符串输出
import java.io.*;
public class standardIO{ public static void main(String[] args) throws IOException { //IO操作必须捕获IO异常 char c; System.out.println("输入任一字符 "); c=(char)System.in.read();

– –
System.in :用于程序的输入;
System.out:用于一般输出;
对应外设为键盘
对应外设为屏幕
System.err:用于显示出错信息; 对应外设为屏幕

System 类的所有属性都是静态static的,调用时以类名System为前缀。
上述3个流对象均为静态属性。
基本I/O之例
//从键盘输入字符,然后在屏幕上显示输入结果
字符输出流:Writer
• Writer是一个字符流,它是一个抽象类,所 以要使用它,也必须通过其子类来实例化 它后才能使用它。 • Writer类的常用方法----查看API文档
• 示例1:HelloWorld-----(按步骤完成) • 向一个文本文件中通过字符输出流写入数据 • public static void main(String[] args) throws Exception { • File file = new File("hellowolrd.txt"); // 声明一个File对象 • Writer writer = null; // 声明一个Write对象 • writer = new FileWriter(file, true); // 通过FileWriter类来实例化 Writer类的对象并以追加的形式写入 • • String str = "字符串形式写入Helloworld"; // 声明一个要写入的字符串 • writer.write(str); // 写入文本文件中 • writer.flush(); // 刷新 • writer.close(); // 关闭字符输出流 • }
用字符流读文件
FileReader fin=null; try { fin = new FileReader("e:\\t.txt"); int c=fin.read(); while(c!=-1){ System.out.print((char)c); c=fin.read(); } } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex){ ex.printStackTrace(); }finally{ try { fin.close(); } catch (IOException ex) { ex.printStackTrace(); }
相关文档
最新文档