java IO流-处理流

1、缓冲流

BufferedReader是最好用的文本读入方式其它的不常用,了解一下就行。

  • 带有缓冲区的数据流,大概意思就是会把你要的数据读取完成之后一次发给你。

BufferedInputStream

  • BufferedInputStream in = new BufferedInputStream(new FileInputStream(new File("filename")));

BufferedOutputStream

  • BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File("filename")));

BufferedReader (最好用的文本读入方式)

  • BufferedReader br = new BufferedReader(new FileReader(new File("filename")));

BufferedReader br = new BufferedReader(new FileReader(new File("a.txt")));
String str = "";
while((str = br.readLine()) != null) {System.out.println(str);
}
br.close();

BufferedWriter

  • BufferedWriter bw = new BufferedWriter(new FileWriter(new File("filename")));

2、转换流

  • 转换流只能将字节流转换为字符流

InputStreamReader OutputStreamWriter,分别为读取与写入中字节流与字符流的转化。

使用:

System.in 是字节流,从输入中读取,首先用InputStreamReader将字节流转为字符流,然后就能用缓冲流中的BufferedReader来读取字符流中的文本数据

System.out是字节流,输出在黑框中,首先使用OutputStream将其转换为字符流,然后就可以用字符流进行输出。

  • 其它的字节流用法跟这个相同,都是一层一层套。

  • 记得flush,否则是不会在黑框中显示的。

  • 需要注意的是如果将System.in关闭也就是close,那么通道就会关闭,所以这个流是不用进行关闭的。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("字符串 + " + br.readLine());
Writer writer = new OutputStreamWriter(System.out);
writer.write("asdfa ");
writer.flush();

3、对象流

ObjectInputStream 对象读取

//                           对象读取流、处理流       节点流               目标文件
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("person.dat")));
Object o = ois.readObject(); // 读取一个对象
Person p = (Person)o;
System.out.println(p.getName() + " " + p.getAge() + " " + p.getId());

ObjectOutputStream 对象写入

//                           对象写入流、处理流       节点流               目标文件
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("person.dat")));
Person person = new Person(1, "张淏", 21);
oos.writeObject(person); // 直接写入一个对象
oos.flush();
oos.close();
  • 序列化,就是将一个对象转化成字节的过程,如果所需要存储的对象没有进行序列化,则会失败报错

Exception in thread "main" java.io.NotSerializableException: com.obj.Person at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) at com.obj.test.main(test.java:9)

  • 反序列化:就是把字节转化成对象

  • 所以需要对操作的对象进行序列化操作,因为类都是支持序列化操作的,只不过默认是不打开的,只需要实现一下Serializable接口即可,只需要implements一下即可不需要真的进行实现。

public class Person implements Serializable {// 。。。 
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/230770.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 13 - Media框架(22)- ACodec(四)

前面两节我们了解了 ACodec 的创建及配置流程,配置完成后 ACodec 进入了 LoadedState,这一节开始将会了解 ACodec 的启动过程。 调用 ACodec::initiateStart 方法发出的 kWhatStart 消息将有 LoadedState 状态来处理,这个方法会向 OMX 组件发…

【深度学习目标检测】八、基于yolov5的抽烟识别(python,深度学习)

YOLOv5是目标检测领域一种非常优秀的模型,其具有以下几个优势: 1. 高精度:YOLOv5相比于其前身YOLOv4,在目标检测精度上有了显著的提升。YOLOv5使用了一系列的改进,如更深的网络结构、更多的特征层和更高分辨率的输入图…

Git及Linux命令介绍

Git介绍 Git 命令如何工作 首先,必须确定我们的代码存储在哪里。常见的假设是只有两个位置 - 一个位于 Github 等远程服务器上,另一个位于我们的本地计算机上。然而,这并不完全准确。 Git 在我们的机器上维护了三个本地存储,这意…

Linux-----12、时间日期

# 时间日期 # 时区设置 在Linux (opens new window)系统中,默认使用的是UTC时间。 即使在安装系统的时候,选择的时区是亚洲上海,Linux默认的BIOS时间(也称:硬件时间)也是UTC时间 (opens new window)。 在…

关于C#反射概念,附带案例!

反射 C#中的反射是一种使程序在运行时能够动态地获取类型信息并调用其成员的技术。通过反射,程序可以在运行时进行类型的动态加载、创建对象、调用方法和属性,以及访问和修改字段等。反射可以使程序更加灵活,但也增加了一定的性能开销。 在C#…

90%的人学Python爬虫都干过这种事,别不承认!

可以说,我是因为想批量下载一个网站的图片,才开始学的python爬虫。当一张一张图片自动下载下来时,满满的成就感,也满满的罪恶感……哈哈哈!!!窈窕淑女,君子好逑,这篇文章…

Android 大版本升级变更截图方法总结

Android 大版本升级变更截图方法总结 一、Android R (11) 平台二、Android S (12) 平台三、Android U (14) 平台 Android 原生的截屏功能是集成在 SystemUI 中,因此我们普通应用想要获取截图方法,就需要研读下 SystemUI 截屏部分的功能实现。 一、Androi…

Android 移动端编译 cityhash动态库

最近做项目, 硬件端 需要 用 cityhash 编译一个 动态库 提供给移动端使用,l 记录一下 编译过程 city .cpp // // Created by Administrator on 2023/12/12. // // Copyright (c) 2011 Google, Inc. // // Permission is hereby granted, free of charg…

java配置+J_IDEA配置+git配置+maven配置+基本语句

当前目录文件夹dir 进入文件夹cd 返回上一级cd.. 创建文件夹:mkdir 文件名删除文件夹:rd 文件夹名, 目录不为空不能直接删 rd /s 带子文件夹一起删 清屏cls 切换d盘才能进入 下载git地址: Git - Downloading Package (g…

使用youtube的api

如何使用youtube的data api https://console.cloud.google.com/apis/dashboard 到这个地方先启用api,找到YouTube Data API v3 这个api,启用它 然后创建凭据 去创建凭据,里面创建相应的客户端,web的需要填写redirect地址,就是回调用的.客户端不需要这个. 创建客户端不需要详…

一文读懂Allins-首个基于 AMM 的多链铭文资产交易协议

“Allins 是铭文赛道中基础设施类的代表,该协议致力于以 AMM 的方式推动铭文资产的流动性,并为铭文资产交易者提供更好的 UI/UX。” 2023年1月份后,比特币Ordinals协议的推出为铭文赛道的兴起奠定了基础。该协议以聪为单位将比特币划分&#…

第十一章 函数式编程

11.1 函数式编程与命令式编程 以函数式范式进行开发并不简单;关键在于习惯这种范式的机制。我们编写一个例子来说明 差异。 假设我们想打印一个数组中所有的元素。我们可以用命令式编程,声明的函数如下: var printArray function(a…

ipa分发平台绑定域名有什么优势

大家好我是咕噜签名分发可爱多。今天跟大家分享一下,为什么建议大家将自己的域名绑定到分发平台(比如咕噜分发)。 将自己的域名绑定分发平台有几个原因和优势: 1. 专业性和品牌建设: 使用自己的域名可以让您的在线存…

【PTA-C语言】实验一-顺序结构

如果代码存在问题,麻烦大家指正 ~ ~有帮助麻烦点个赞 ~ ~ 实验一-顺序结构 7-1 逆序的三位数(分数 10)7-2 求整数均值(分数 10)7-3 日期格式化(分数 10)7-4 混合类型数据格式化输入(…

消息队列有哪些应用场景?

分布式系统不同模块之间的通信,除了远程服务调用以外,消息中间件是另外一个重要的手段,在各种互联网系统设计中,消息队列有着广泛的应用。从本文开始,专栏进入分布式消息的模块,将讨论消息队列使用中的高频…

Windows如何安装使用TortoiseSVN客户端并实现公网访问本地SVN Server

文章目录 前言1. TortoiseSVN 客户端下载安装2. 创建检出文件夹3. 创建与提交文件4. 公网访问测试 前言 TortoiseSVN是一个开源的版本控制系统,它与Apache Subversion(SVN)集成在一起,提供了一个用户友好的界面,方便用…

再谈低代码开发——值得所有程序设计和开发者重视的建议!

前几天看到关于“低代码开发”的话题,简单的谈了些自己的看法,也看了一些朋友们各抒己见的好文章,今天想结合我们实际使用的开发平台和大家再做些探讨。 在平台的简介中首先提出了这个大家一定很关心的问题: 一、“为什么使用低代…

三防平板电脑定制参数_三防移动平板终端方案

这是一款搭载了低功耗高性能CPU的三防平板电脑。采用联发科MT6771处理器,内置4GB64GB内存和八核处理器,提供出色的性能和运行速度。同时,它运行着最新的安卓Android 11.0系统,全屏支持和屏幕内容显示的优化使其更加方便和简单易用…

【华大】HC32F420JATB-LQ48学习资料及开发环境

1. 产品特点 ⚫ 84MHz Cortex-M4 32位CPU平台 ⚫ 128K 字节 FLASH 存储器,具有擦写保护功能 ⚫ 24K 字节 RAM 存储器 ⚫ 6 通道 DMAC ⚫多达 52 个通用 I/O 管脚 ⚫ 时钟、晶振 ‒ 外部高速晶振 8MHz~32MHz ‒ 内部高速时钟 22MHz~24MHz ‒ 内部低速时钟 3…

GoWin FPGA, GPIO--- startup1

一个Bank只能用一个电压,假如同一个Bank,在引脚里设置不同的电压,编译不过。 解释说明 2. 错误引脚限制 以上编译设置会导致编译错误。 Floor planner说明