随笔 - 217  文章 - 4  评论 - 4  阅读 - 23587

自学Java第三十七课

今天学习了io中的特殊操作流,不同于我们平常使用的字符流、字节流,特殊操作流包含平常不太常用的流,但比较重要。

标准输入输出流

  System中的两个静态成员变量

  public static final InputStream in标准输入流,键盘输入、主机环境、键盘用户指定另一束出院

  public static final OutputStream out标准输出流,显示输出、主机环境、用户指定另一输出目标

  手动键盘录入:BufferedReader br=new BufferedReader(new InputStreamReader(System.in)),与Scanner类似。

 

 

  System.out本质是标准输出流 PrintStream ps=System.out;

 

 

  PrintStream 类有的方法,System.out都可以使用

 

 打印流

  可分为字节打印流(PrintStream)和字符打印流(PrintWriter)

  特点:①只输出数据,不读取数据;②有自己特有的方法。

  字节打印流 PrintStream(String fileName):使用指定文件名创建新的打印流

  

 

   注:①使用继承父类写数据,查看时会转码(Write());②是用自己特有的方法写数据,数据原样输出(print()).

字符打印流构造方法

PrintWrite(String fileName) 使用指定文件名创建新的PrintWrite,不需要自动刷新
PrintWrite(writer out,boolean autoFlush)

创建一个新的PrintWriter,out:字符输出流

autoFlush:布尔值,若为true,则println、printf、format方法刷新缓冲区

 

 

 

 

 

 

 

 对象序列化流

  对象序列化:将对象保存到磁盘中,或在网络上传输对象。一个字节序列表示一个对象,字节序列包含对象基本信息。

  对象序列化流:ObjectOutputStream;对象反序列化流:ObjectInputStream

序列化流

  将Java原始数据和图形写入OutputStream,可以用ObjectInputStream读取对象,可通过使用流文件来实现对象持久存储。如果流是网络套接字流,可以在另一主机或另一进程中重构对象

构造方法 ObjectOutputStream(OutputStream out):创建一个写入OutputStream的ObjectOutputStream。

序列对象方法  void write Object(Object obj):将指定对象写入ObjectOutputStream

 

   注:①一个对象要想被序列化,对象所属类必须实现Serializable接口;②Serializable是一个标记接口,不需要重写方法。

反序列化流

  ObjectInputStream(InputStream in):创建从指定的InputStream读取的ObjectInputstream

方法

Object readObject():从ObjectInputStream

 

 对象序列化的三个问题

  ①序列化一个对象后,修改对象所属类文件,读取文件会发生什么? 抛出InvalidClassException异常

  ②解决方法?给对象所属类加一个SerialVersionUID,private static final long serialVersionUID-42L;

  ③变量不想被序列化?给变量加transient修饰,该变量不参与序列化进程

Properties

  ①是一个Map体系集合类

  ②Properties可保存到流中或从流中加载

 

 Properties特有方法

Object setProperty(String key,String value) 设置集合的键值,String,底层调用HashSet方法put
String getProperty(String key) 使用此属性列表指定键搜索属性
Set<String>stringPropertyNames() 返回一个不可修改的键集,键及其对应的值是字符串

 

 

 

 

 

 Properties和io流结合方法

void load(InputStream in Stream) 从输入字节流读取属性列表(键和元素对)
void load(Reader reader) 从输入字符流读取属性列表(键和元素对)
void store(OutputStream out,String comments) 将此属性列表写入次Properties表中,一适合于使用load(Input Stream)的方法格式写入输出字节流
void store(Writer writer,String comments) 将此属性列表写入次Properties表中,一适合于使用load(Input Stream)的方法格式写入输出字符流

 

 

 

 

 

 

 

posted on   跨越&尘世  阅读(22)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示