Java初级培训笔记------IO流(2)
2015-08-23 20:11
483 查看
字符流理念上与字节流相同,区别就在于字符流每次读取的单位是字符,也就是两个字节,具体结构图参见Java初级培训笔记------IO流(1)。
FileWriter 与FileReader;BufferedReader与BufferedWriter
写入读出方式都是任选其一
BufferedReader与BufferedWriter将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。 可以减少数据的读写次数,提高数据的读写效率(实质是将需要读写的数据存在一个char类型的数组中)字节流也是,所以要重点掌握,比较常用。
了解:Object对象流:
ObjectOutputStream对象的序列化:将对象以二进制的形式永久性保存,或者以二进制的形式在网络传输
ObjectInputStream对象的反序列化:将二进制永久性保存的对象或者传输的对象,还原Java中临时对象
他的主要目标就是将对象永久保存起来,比如说存到某个txt文档中,当某一天用到的时候再通过反序列化调用
了解就行
FileWriter 与FileReader;BufferedReader与BufferedWriter
public static void main(String[] args) { // TODO Auto-generated method stub try { File f=new File("E:/test/a.txt"); if(!f.exists()){ f.createNewFile(); } FileWriter fw=new FileWriter(f); FileReader fr=new FileReader(f); String str="好好学习,天天向上"; fw.write(str);//FileWriter的构造方法中直接提供了传入字符串的方法,可以直接写入字符串 char[] c=str.toCharArray(); fw.write(c);//此处是传入一个char数组,这一点跟字节流的传入byte数组是一样的 byte数组一次读一个字节 char数组一次读两个字节 fw.flush();//刷新 BufferedWriter bw=new BufferedWriter(fw); bw.write(str); bw.flush(); bw.close(); fw.close();//关闭 //读 //方式1 int len; while((len=fr.read())!=-1){ System.out.print((char)len); } //方式2 char[] ch=new char[2]; while((len=fr.read(ch))!=-1){ System.out.print(String.valueOf(ch,0,len)+" ");//一次读两个字符,加后边的空格就是为了体现这一特点 } //方式3 while((len=fr.read(ch,0,ch.length))!=-1){//方法重载 参数不同而已 System.out.print(String.valueOf(ch)+"*");//一次读两个字符 } //方式4 BufferedReader br=new BufferedReader(fr); String a=""; while((a=br.readLine())!=null){ System.out.println(a); } br.close(); fr.close(); } catch (Exception e) { // TODO: handle exception } }
写入读出方式都是任选其一
BufferedReader与BufferedWriter将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。 可以减少数据的读写次数,提高数据的读写效率(实质是将需要读写的数据存在一个char类型的数组中)字节流也是,所以要重点掌握,比较常用。
了解:Object对象流:
ObjectOutputStream对象的序列化:将对象以二进制的形式永久性保存,或者以二进制的形式在网络传输
ObjectInputStream对象的反序列化:将二进制永久性保存的对象或者传输的对象,还原Java中临时对象
他的主要目标就是将对象永久保存起来,比如说存到某个txt文档中,当某一天用到的时候再通过反序列化调用
<span style="white-space:pre"> </span>News n = new News("北京将举办冬奥会");//创建对象 news类里只有新闻名称一个属性 //对象的序列化 try{ FileOutputStream fos = new FileOutputStream( new File("e:/io/a.txt")); //创建对象输入流对象 ObjectOutputStream oos = new ObjectOutputStream(fos); //将n对象序列化,将n写入e:/io/a.txt oos.writeBoolean(true); //Serializable标识性接口,只是说明该类的对象是可以序列化 oos.writeObject(n); oos.close(); } catch(Exception e) { e.printStackTrace(); }
<pre name="code" class="java">//完成对象的反序列化:将对象以二进制形式读入程序,并还原。 try { FileInputStream fis = new FileInputStream(new File("e:/io/a.txt")); //创建对象输入流对象,完成对象的反序列化 ObjectInputStream ois = new ObjectInputStream(fis); System.out.println(ois.readBoolean()); Object obj=ois.readObject(); System.out.println("obj="+obj); News ns=(News)obj;//强转 System.out.println(ns.getDate()); } catch (Exception e) { e.printStackTrace(); }
了解就行
相关文章推荐
- java获取文件编码
- Java 四大域对象总结
- Spring配置文件解析--bean属性
- Java修饰符关键词大全
- Spring学习之Aop的基本概念
- java基础-API-String类、基本数据类型对象包装类
- java线 生产者和消费者
- Java内存问题的一些见解
- 【Spring】初始化Spring IoC容器(非Web应用),并获取Bean
- Java I/O 操作及优化建议
- 学习日志-中缀表达式转后缀表达式并计算结果
- java的instanceof关键字
- java基础-多线程
- 确定两串乱序同构(Java)
- java基础-面向对象-异常
- Meclipse 10 设置 new 菜单
- java类对象与byte数组的互相转换
- Java改变程序观感
- Spring + JdbcTemplate + JdbcDaoSupport examples
- java基础-面向对象-继承、多态