一、原代码
public class test {
public static void main(String[] args) throws IOException {
Write();
// Read();
}
public static void Write() {
try {
Address address = new Address(1, 1, "lihua", "17736578899", "河南省郑州市中原区", 1);
FileOutputStream fos = new FileOutputStream("H:\\test.txt");
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fos);
objectOutputStream.writeObject(address);
System.out.println("序列化成功");
objectOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void Read() {
try {
FileInputStream fis = new FileInputStream("H:\\test.txt");
ObjectInputStream objectInputStream = new ObjectInputStream(fis);
Address address1 = (Address) objectInputStream.readObject();
System.out.println("反序列化成功");
System.out.println(address1.toString());
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
出现乱码
用BufferedWriter解决
import com.itqf.entity.Address;
import java.io.*;
public class test {
public static void main(String[] args) throws IOException {
Write();
// Read();
}
public static void Write() {
try {
Address address = new Address(1, 1, "lihua", "17736578899", "河南省郑州市中原区", 1);
// FileOutputStream fos = new FileOutputStream("H:\\test.txt");
// ObjectOutputStream objectOutputStream = new ObjectOutputStream(fos);
// objectOutputStream.writeObject(address);
// System.out.println("序列化成功");
// objectOutputStream.close();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("H:\\test.txt")),"utf-8"));
bufferedWriter.write(address.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
public static void Read() {
try {
FileInputStream fis = new FileInputStream("H:\\test.txt");
ObjectInputStream objectInputStream = new ObjectInputStream(fis);
Address address1 = (Address) objectInputStream.readObject();
System.out.println("反序列化成功");
System.out.println(address1.toString());
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
写完发现text.txt文件没有代码
原因
未刷新该流的缓冲。
bufferedWriter.flush();
关键的一行代码。如果没有加这行代码。数据只是保存在缓冲区中。没有写进文件。
加了这行才能将数据写入目的地。
import com.itqf.entity.Address;
import java.io.*;
public class test {
public static void main(String[] args) throws IOException {
Write();
// Read();
}
public static void Write() {
try {
Address address = new Address(1, 1, "lihua", "17736578899", "河南省郑州市中原区", 1);
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("H:\\test.txt")),"utf-8"));
bufferedWriter.write(address.toString());
System.out.println("序列化成功");
bufferedWriter.flush();
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void Read() {
try {
FileInputStream fis = new FileInputStream("H:\\test.txt");
ObjectInputStream objectInputStream = new ObjectInputStream(fis);
Address address1 = (Address) objectInputStream.readObject();
System.out.println("反序列化成功");
System.out.println(address1.toString());
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
例题
File newFile = new File("Text.txt");
String data = "你好,Android.2011";
FileWriter write = new FileWriter(newFile, true);
BufferedWriter bufferedWriter = new BufferedWriter(write);
bufferedWriter.write(data);
bufferedWriter.newLine();//换行
/* * 刷新该流的缓冲。
* 关键的一行代码。如果没有加这行代码。数据只是保存在缓冲区中。没有写进文件。
* 加了这行才能将数据写入目的地。 * */
bufferedWriter.flush();
write.close();
bufferedWriter.close();