java实训的第四天就学到了流的各种操作和类的序列化反序列化,对于没认真学过的人进度有些快。好了废话不多说了。
流按处理数据类型不同划分为字符流,字节流。二者应用方面很容易区分,前者处理文本文件,后者处理各种文件。
举一个例子:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import org.junit.Test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
public class Findfile {
@Test
public static void main(String[] args) throws IOException
{
new Findfile().saveFile("/Users/tangweize/Desktop/c.txt", "abcdefg");
}
public void saveFile(String fileName,String content) throws IOException
{
File file =new File(fileName);//访问该文件
if(!file.exists())
{
System.out.println("不存在");
System.out.println(file.createNewFile());//创建新的文件
}
FileOutputStream fos = new FileOutputStream(file,true);//创建一个向具有指定name的文件中并在末尾写入数据的输出文件流。如果第二个参数为true,则将字节写入文件末尾处,而不是写入文件开始处
OutputStreamWriter out =new OutputStreamWriter(fos,"utf-8"); //重写一个字节输出流,用“utf-8”格式写入
BufferedWriter bw = new BufferedWriter(out);//创建out的缓冲流
bw.write(content);
bw.write("\r\n");
bw.flush();
System.out.println("写入成功!");
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.nio.file.attribute.FileTime;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import org.junit.Test;
class Stu implements Serializable{
private String name;
private int age;
private char sex;
public Stu(String n,int a,char s){
this.name = n;
this.age = a;
this.sex = s;
}
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;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public String toString() {
return "Name:" + name + "/nAge:" + age + "/nSex:" + sex;
}
}
public class Demo{
public static void main(String[] args) throws IOException {
Stu s1 = new Stu("裸宇",25,'W');
Stu s2 = new Stu("海河南",22,'W');
Demo.serializable(s1);//序列化
Demo.inserializable();// 反序列化
}
public static void serializable(Stu c) throws IOException {
File file = new File("/Users/tangweize/Desktop/d.txt");
if(!file.exists()) {
System.out.print("不存在");
file.createNewFile();
}
FileOutputStream filename = new FileOutputStream(file, true);
ObjectOutputStream obo = new ObjectOutputStream(filename);
obo.writeObject(c);
obo.close();
filename.close();
}
public static void inserializable() throws IOException {
File file = new File("/Users/tangweize/Desktop/d.txt");
FileInputStream input = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(input);
try {
Stu s = (Stu) ois.readObject();
System.out.println(s.getName() + "age is " + s.getAge());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ois.close();
}
}