您的位置:首页 > 编程语言 > Java开发

Java初级培训笔记------IO流(2)

2015-08-23 20:11 483 查看
字符流理念上与字节流相同,区别就在于字符流每次读取的单位是字符,也就是两个字节,具体结构图参见Java初级培训笔记------IO流(1)

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();

}


了解就行

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: