缓冲流和对象流

来源:互联网 发布:数据库管理证书 编辑:程序博客网 时间:2024/05/16 11:32

缓冲流实例:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


//BufferedReader/BufferedWriter
public class Learn1 {
public static void main(String[] args) {
FileReader in = null;
BufferedReader bufferedReader = null;

FileWriter fileWriter = null;
BufferedWriter bufferedWriter = null;


//现在将读取的内容存到磁盘中没有的路径上
File file = new File("e:/j151");

File file2 = new File(file, "B.txt");

if(!file2.exists()) {
file.mkdirs();//创建目录--只创建目录,不应该包含文件
try {
file2.createNewFile();//创建文档
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

try {
in = new FileReader("E:/A.txt");
bufferedReader = new BufferedReader(in);

fileWriter = new FileWriter(file2);
bufferedWriter = new BufferedWriter(fileWriter);

String str = null;
while((str=bufferedReader.readLine())!=null) {
bufferedWriter.write(str);//输出一行
bufferedWriter.newLine();//新的一行
}
bufferedWriter.write("你结束了~");//可以自行书写

fileWriter.flush();
bufferedWriter.flush();

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(in!=null) {
in.close();
}
if(bufferedReader!=null) {
bufferedReader.close();
}
if(fileWriter!=null) {
fileWriter.close();
}
if(bufferedWriter!=null) {
bufferedWriter.close();
}
} catch (Exception e2) {
System.out.println("错了");
}
}
}

}

————————————————————————————————

对象流实例:

import java.io.Serializable;


//Serializable接口没有需要实现的方法,其作为标记接口存在
//什么是标记接口?--具有特殊含义但不需要重写方法的接口
//实现了Serializable接口表示已经可以序列化
public class Student implements Serializable{
private String name;
private int age;

public Student() {
}


public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}


public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}


public int getAge() {
return age;
}


public void setAge(int age) {
this.age = age;
}


@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}



import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;

//对象流
//对象流也有输入输出流--
public class Learn {
public static void main(String[] args) {
Student stu =  new Student("小强",18);
Student stu1 =  new Student("校花",17);

FileOutputStream out = null;
ObjectOutputStream objOut = null;

FileInputStream in = null;
ObjectInputStream objIn = null;
try {
in = new FileInputStream("use/user.txt");//当前工程中的存储路径
objIn = new ObjectInputStream(in);

out = new FileOutputStream("use/user.txt");//从源文件中读取
objOut = new ObjectOutputStream(out);
//如果要输出一个对象,则需要将其类进行序列化
//什么是序列化呢?--让类实现Serializable接口
//否则出现异常java.io.NotSerializableException
   //objOut.writeObject(stu);

//现在有个疑问,如何存多个对象?
List<Student> list =  new ArrayList<Student>();
list.add(stu);
list.add(stu1);
//如果是使用集合存入,则需要注意一点,里面的对象所对应的类都需要序列化
objOut.writeObject(list);//写入
//如何将存入的序列化的内容取出?--反序列化(创建对象的第二种方式)
List<Student> list1 = (List<Student>) objIn.readObject();
System.out.println(list1.get(0).getName());
out.flush();
objOut.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally {
try {
if(objOut!=null) {
objOut.close();
}
if(out!=null) {
out.close();
}
} catch (Exception e2) {
System.out.println("错了");
}
}
}
}