package com.swift.baseKnowledge;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.io.PrintWriter; /*现有一字符串:”我爱Java”。将该字符串保存到当前项目根目录下的a.txt文件中。要求:使用utf8编码保存。
操作步骤描述
1.创建文件字节输出流关联目标文件
2.根据文件字节输出流创建转换输出流对象,并指定编码字符集为:uft8
3.调用流对象的方法将字符串写出到文件中。
4.关闭流并释放资源。*/ /*利用转换输入流将当前项目根目录下使用utf8编码的a.txt文件的内容读取出来,并打印在控制台上。要求:不能出现乱码的情况。
操作步骤描述
1.创建字节输入流对象指定文件路径。
2.根据字节输入流对象创建转换输入流对象并指定字符集编码为:utf8
3.调用转换输入流对象的读取方法读取内容
4.关闭流释放资源*/ /*定义一个学生类,包含姓名,年龄,性别等成员变量,提供setters和getters方法以及构造方法。在测试类中创建一个学生对象,给学生对象的三个成员变量赋值。然后将该对象序列化到当前项目根目录下的stu.txt文件中。
操作步骤描述
1.定义学生类并实现序列化接口和测试类
2.在测试类中创建学生对象
3.创建文件字节输出流对象并关联目标文件
4.根据文件字节输出流对象创建对象输出流对象
5.调用对象输出流对象的方法将学生对象保存到文件中
6.关闭流释放资源*/ /*将需求4中序列化到stu.txt文件中的学生对象读取出来。
操作步骤描述
1.创建文件字节输入流对象关联目标文件
2.根据文件字节输入流对象创建对象输入流对象
3.调用对象输入流对象的方法从文件中获取学生对象
4.关闭流释放资源。*/ /*1.请简述下打印流的特点及打印流的分类
2.从键盘录入一行字符串,利用字节打印流将该行字符串保存到当前项目根目录下的d.txt文件中
操作步骤描述
2.1.创建字节打印流对象并关联文件路径
2.2.调用字节打印流对象的打印方法将内容输入到目标文件中
2.3.关闭流释放资源
3.请简述下配置classpath添加jar包到项目中的步骤
4.通过Commons-IO完成文件复制的功能*/ import java.io.Serializable; public class Xuliehua implements Serializable{ public static void main(String[] args) throws IOException, ReflectiveOperationException { OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("a.txt"),"utf-8");
osw.write("我爱Java");
osw.flush();
osw.close(); InputStreamReader isr=new InputStreamReader(new FileInputStream("a.txt"),"utf-8");
char[] chars=new char[1024];
StringBuilder sb=new StringBuilder();
int len;
while((len=isr.read(chars))!=-1) {
sb.append(chars, 0, len);
}
System.out.println(sb); // Student stu=new Student();
// stu.setName("张三");
// stu.setAge(20);
// stu.setSex("男");
// ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("stu.txt"));
// oos.writeObject(stu);
// oos.flush();
// oos.close(); ObjectInputStream ois=new ObjectInputStream(new FileInputStream("stu.txt"));
Object obj=ois.readObject();
System.out.println(obj); System.out.println(System.out);
//始终是true 默认选项,所以不需要写也自动刷
PrintStream p=new PrintStream(System.out,true);
p.println("Hello");
p.println("How are you");
PrintStream ps=new PrintStream(new File("d.txt"));
ps.println("what should I do for tomorrow.");
ps.close();
//必须写true才自动刷,否则不自动刷新
PrintWriter pw=new PrintWriter(System.out,true);
pw.println("what");
pw.println("is");
pw.close(); //静态的不能被序列化 因为序列化的内容为对象,静态的由类直接调用,不属于对象序列,所以不被序列化 //不定义静态,age也不想序列化 transient transient transient 阻止变量被序列化 //Serializable 标记型接口 //序列化后,如果修改代码,不再重新序列化,则出现 InvalidClassException 序列号冲突异常 //即使改了源代码,反序列化也成功运行 成员属性加 static final long SeriaVersionUID=42L; 或者点类上的黄线 //打印流应用于javaWeb 可以自刷新,原样打印 char[] 数组直接打印 String直接打印 其他数组打印哈希值 //CommonsiO 第三方工具
} }

java基础 序列化反序列化流 实现Serializable 接口 自动装载序列号到对象文本文件如修改不能反序列化对象文本,除非自定义long型常量 打印流的更多相关文章

  1. Java基础知识强化104:Serializable接口 与 Parcelable接口

    1. 什么是 序列化 和 反序列化 ?     序列化 :序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化.可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间.序 ...

  2. 面试官:Java序列化为什么要实现Serializable接口?我懵了

    整理了一些Java方面的架构.面试资料(微服务.集群.分布式.中间件等),有需要的小伙伴可以关注公众号[程序员内点事],无套路自行领取 更多优选 一口气说出 9种 分布式ID生成方式,面试官有点懵了 ...

  3. 第二十八节:Java基础-进阶继承,抽象类,接口

    前言 Java基础-进阶继承,抽象类,接口 进阶继承 class Stu { int age = 1; } class Stuo extends Stu { int agee = 2; } class ...

  4. Java 对象序列化和反序列化 (实现 Serializable 接口)

    序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化.  把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放 ...

  5. Java基础—序列化与反序列化(转载)

    转载自: Java序列化与反序列化 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列的过程:而Java反序列化是指把字节序列恢复为Java对象的过程. 2.为什么需要序列化 ...

  6. Java基础--序列化Serializable

    对Java对象序列化的目的是持久化对象或者为RMI(远程方法调用)传递参数和返回值. 下面是一个序列化对象写入文件的例子: ---------------------------- package u ...

  7. Java基础--序列化和反序列化

    作用:在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存.比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Sessi ...

  8. Java基础——序列化

    Java的“对象序列化”能将一个实现了Serialiable接口(标记接口,没有任何方法)的对象转化为一组byte,这样日后要用到这个对象的时候,就能把这些byte数据恢复出来,并据此重新构建那个对象 ...

  9. java.io.InvalidClassException 异常解决, 实现Serializable接口的注意事项

    解决方案: 在类中显式指定 private static final long serialVersionUID = 42L; 类实现序列化接口, 进行序列化反序列化的时候, 抛出 java.io.I ...

随机推荐

  1. mysql忘记密码时,重新修改密码

    错误描述 1045 access denied for user 'root'@'localhost' using password yes 1045 access denied for user ' ...

  2. [转]jQuery页面滚动图片等元素动态加载实现

    本文转自:http://www.zhangxinxu.com/wordpress/?p=1259 一.关于滚动显屏加载 常常会有这样子的页面,内容很丰富,页面很长,图片较多.比如说光棍节很疯狂的淘宝商 ...

  3. LeetCode 887.鸡蛋掉落(C++)

    每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去. 你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的 ...

  4. 自己的spring boot starter

    这篇文章说的更加详细具体:https://www.cnblogs.com/hjwublog/p/10332042.html 在刚开始看spring boot的时候,发现这么多starter,不免觉得好 ...

  5. phpwind本地安装 inernal server error错误

    wampserver2.2环境,本地安装phpwind9.0时出错: Internal Server Error The server encountered an internal error or ...

  6. Sass基础(二)

    五.嵌套 在Sass中,嵌套有三种方式:选择器嵌套.属性嵌套.伪类嵌套 1.选择器嵌套 2.属性嵌套 3.伪类嵌套 六.混合宏 当样式变得越来越复杂,需要重复使用大段的样式时,使用变量就无法达到目的了 ...

  7. typedef struct 与 struct

    学c++之前最好先学c.特别要说的是,一些虽然冠名为c++的项目的文件中却大部分都是c的代码. 比如我们这个例子: 在c语言中,定义一个结构体和其实适合c++中有区别的.比如我们有如下的代码: str ...

  8. lunix重启service network restart错误Job for network.service failed. See 'system 或Failed to start LSB: Bring

    1.mac地址不对 通过ip addr查看mac地址,然后修改cd /etc/sysconfig/network-scripts/目录下的文件里面的mac地址 2.通过以下方法 systemctl s ...

  9. Struts2_Path

    路径问题说明: struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径.index.jsp虽然可以用rederect方式解决,但redirect方式并非必要 ...

  10. JavaScript 编写随机四位数验证码(大小写字母和数字)

    1.JavaScript编写随机四位数验证码,用到的知识点为: a.Math对象的随机数:Math.random() b.Math对象的取整    :Math.floor() c.处理所需要的下标个数 ...