Java Object流和Propertise流
时间:2022-07-22
本文章向大家介绍Java Object流和Propertise流,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.序列化与反序列化
public class ObjectOutputStreamDemo {
/**
* 序列化流实质是使对象写入文件,或者在网络中传输
* 把对象按照流一样的方式存入文本文件,或者在网络中传输 --写--序列化
* 反序列化,就是把文本文件中的流对象或者网络中的流对象还原成对象 --读--反序列化
*/
public static void main(String[] args) {
try {
write();
try {
read();
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static void read() throws IOException, Throwable {
//创建反序列化对象
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("oos.txt"));
Object obj = ois.readObject();
//释放资源
ois.close();
System.out.println(obj);
}
private static void write() throws IOException {
//创建序列化对象
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("oos.txt"));
//创建被序列化类对象
Student stu = new Student("张晓天",18,"男");
oos.writeObject(stu);
//释放资源
oos.close();
}
}
如果类中的成员不想被序列化 可以在前面加 transient 关键字
2.属性类
public class PropertiseDemo {
public static void main(String[] args) {
//作为map集合使用
Properties prop = new Properties();
//添加元素
prop.put("itoo1", "zhang");
prop.put("it002", "xiao");
prop.put("it003", "tian");
//遍历map集合
Set<Object> set = prop.keySet();
for (Object key : set) {
Object value =prop.get(key);
System.out.println(key+"---"+value);
}
System.out.println("prop:"+prop);
}
}
3.复制文件
public static void main(String[] args) throws IOException {
Files.copy(Paths.get("a.java"),new FileOutputStream("c.java"));
}
4.集合写入文件
public static void main(String[] args) throws IOException {
ArrayList<String> arrays = new ArrayList<String>();
arrays.add("hello");
arrays.add("word");
arrays.add("java");
Files.write(Paths.get("a.txt"), arrays, Charset.forName("GBK"));
}
5.Properties修改属性文件中的键值对
class PropertiesDemo {
/**
* 1.把文件中的数据加载到集合中
* 2.遍历集合获取每一个键
* 3.判断是否有“lisi”的键,如果有就修改其值为“100”
* 4.把集合中的数据重新存储到文件中
*如果出现错误可能因为导包的原因
*/
public static void main(String[] args) throws IOException {
//把属性文件中的数据加载到集合
Properties prop = new Properties();
Reader r = new FileReader("a.txt");
prop.load(r);
r.close();
//遍历集合获取每一个键
Set<String> set = prop.stringPropertyNames();
for (String string : set) {
if("lisi".equals(string)){
prop.setProperty(string, "100");
break;
}
}
//把集合中的数据重新存储到文件中
Writer w = new FileWriter("a.txt");
prop.store(w,null);
w.close();
}
}
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 执行ALTER TABLE语句时如何避免长时间阻塞并发查询
- P1458 顺序的分数 Ordered Fractions(有技巧的枚举)+C++类封装=精简代码
- Codeforce 140C (贪心+优先队列)补题
- CodeForces - 140A New Year Table (几何题)当时没想出来-----补题
- PostgreSQL vacuum可见性
- PostgreSQL VFD机制
- POJ 2136 Vertical Histogram(当时写的比较恶心,优化一下)
- PostgreSQL 12的可拔插存储引擎--表访问方法以及bloackholes案例
- POJ 2230 Watchcow 欧拉回路的DFS解法(模板题)
- POJ 2188 Cow Laundry
- 51NOD 2072 装箱问题 背包问题 01 背包 DP 动态规划
- 51 NOD 1049 最大子段和 动态规划 模板 板子 DP
- 51NOD 1006 最长公共子序列 Lcs 动态规划 DP 模板题 板子
- CodeForces - 262C 贪心
- 花狗C语言彩色贪吃蛇(完整代码)