Java IO & Serialization
2024-09-04 15:27:25
Java IO & Serialization
专为开卷考试准备,内容包括基本的文本文件和二进制文件的读写以及序列化反序列化操作
IO demo
package helloworld;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class TestIO {
public static void main(String[] args) {
String fileName = "test.txt";
try {
FileWriter fWriter = new FileWriter(fileName);
fWriter.write("你好\n");
fWriter.write("Hello World");
fWriter.close();
// 带缓冲的写法,写入大量内容的时候可以更加高效一些
BufferedWriter fWriter2 = new BufferedWriter(new FileWriter("test2.txt")); // 装饰器模式
fWriter2.write("加入buffer\n");
fWriter2.write("Hi World");
fWriter2.close();
// 读取文件
BufferedReader fReader = new BufferedReader (new FileReader(fileName));
StringBuffer content = new StringBuffer();
String line;
while ((line = fReader.readLine())!=null) {
content.append(line);
}
System.out.println(content);
// 你好\nHello World
fReader.close();
} catch (IOException e) {
e.printStackTrace();
}
// 二进制文件
try {
// 打开流
DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream("test.bin"));
dataOutputStream.writeInt(123);
dataOutputStream.writeUTF("方浩 the great");
dataOutputStream.writeDouble(1234.56);
dataOutputStream.close(); // 关闭流
// 读取二进制文件
DataInputStream dataInputStream = new DataInputStream(new FileInputStream("test.bin"));
System.out.println(dataInputStream.readInt());
System.out.println(dataInputStream.readUTF());
System.out.println(dataInputStream.readDouble());
dataInputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Serialization demo
package helloworld;
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.io.Serializable;
// 要序列化的的对象需要实现序列化接口
class Employee implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
String name;
String address;
void mailCheck() {
System.out.println("Mailing a check to " + name + " " + address);
}
}
public class TestSerialization {
public static void main(String[] args) {
Employee employee = new Employee();
employee.name = "Tim";
employee.address = "Phokka Kuan, Ambehta Peer";
// 序列化
try {
ObjectOutputStream out = new ObjectOutputStream(
new FileOutputStream("test.ser"));
// 把对象存入文件
out.writeObject(employee);
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 反序列化
try {
ObjectInputStream in = new ObjectInputStream(
new FileInputStream("test.ser"));
Employee e = (Employee)in.readObject();
in.close();
e.mailCheck();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
最新文章
- UVa 524 Prime Ring Problem(回溯法)
- DAO模型
- vmware esxi 找不到网卡驱动,硬盘的解决方法
- Apache和PHP的安装
- CSAPP(1):数字的计算机表示——课后题
- Java设计模式系列之中介者模式
- socket(TCP)发送文件
- Windows 7 Apache下计算机无法访问局域网网站的问题
- HTTP协议--简析
- hdu2861(递推)
- 批处理 取得当前路径 %CD%
- 第3章 Java语言基础----声明成员变量,对变量进行赋值
- keyup实现在输入状态不发送搜索请求,停止输入后发送
- Ajax来实现下拉框省市区三级联动效果(服务端基于express)
- Java大小写转化
- 第三节:框架前期准备篇之利用Newtonsoft.Json改造MVC默认的JsonResult
- UI设计教程分享:Ps合成炫酷机械姬
- IETF
- list页面-按照choice筛选丶传condition过滤筛选项丶筛选与显示同步
- Linux命令-用户管理命令:useradd,passwd,who,w
热门文章
- bizcharts在火狐上的Invalid date报错
- JAVA语言程序设计课后习题----第三单元解析(仅供参考)
- deep_learning_Function_ Matplotlib 3D 绘图函数 plot_surface 的 rstride 和 cstride 参数
- mysql服务脚本
- 下拉菜单 Spinner 简单纯字符串版
- 9.0.网络编程_IO 通信模型
- P_C_Brules
- Hdu 1564 1*2矩阵覆盖棋局博弈
- php工程师各大公司要求
- mysqldump --tab=path参数使用