Java:IO

news2024/9/20 18:30:44

java.io中有百万计的类,如何找到自己需要的部分?

IO涉及到一个“流”stream的概念,可以简单理解成数据从一个源头到一个目的地。明白数据从哪来,要到哪里去,数据流中是字节还是字符之后,才能找到自己需要的类。

字节流

根据流中内容可以分为字节流(一般处理二进制数据)和字符流(一般处理文本数据)。

字节流的两个基类:InputStream和OutputStream,分别表示流的源头和流的目的地。如FileInputStream表字节流的源头是文件,即从文件中拿数据。FileOutputStream表字节流的目的地是文件,即向文件中输送。

此外,为了让流具有缓冲作用,还提供了BufferedInputStream和BufferedOutputStream。

比如将一个对象序列化进文件:

FileOutputStream fs = new FileOutputStream("file.ser");
ObjectOutputStream os = new ObjectOutputStream(fs); //obj通过ObjectOutputStream向fs输出

os.writeObject(obj);

将数据装入文件,流的目的地是文件,故选择FileOutputStream。流中内容为字节,而要输入的数据是对象,为了将对象向字节进行转换,插入了ObjectOutputStream。当对象进入ObjectOutputStream后,obj会被转为字节,之后字节进入FileOutputStream流,最终“流”向文件。

可以看到,每个stream都有自己的功能,我们只需要拼接它们就好了。

字符流

当处理文本数据时,使用字符流。两个基类Reader和Writer,分别表示流的源头和目的地。如FileReader表字符流的源头是文件,即从文件中读数据。FileWriter表字符流的目的是文件,即向文件写数据。

除了提供了缓冲功能BufferedReader和BufferedWriter外,还提供了InputStreamReader和OutputStreamWriter用来将InputStream和OutputStream转为Reader和Writer,方便进行文本处理。

例如,从一个socket中读取文本:

Socket soc = new Socket("xx", xx);
InputStreamReader ir = new InpuStreamReader(soc.getInputStream());
BufferedReader br = new BufferedReader(ir)
String msg = br.readLine()

从socket读取数据,即socket向流中输入数据,流的源头是socket,故要获取socket的输入流。因为我们要读取文本内容,而不想读取字节数据,故通过InputStreamReader将字节流转为字符流。

为了让流具有缓冲作用,再接上BufferedReader,之后便可以从流中读取数据了。

那向socket中发送文本数据呢?

可以把上面的数据改改,Input改成Output,reader改成writer。这里说另一个类PrintWriter,类重载了很多构造方法,能够接受String,File,OutputStream以及Writer,流内数据类型的转换自己可以完成,且自带缓冲。

Socket soc = new Socket("xx", xx);
PrintWriter pw = new PrintWriter(soc.getOutputStream());
pw.println("xx")

流需要考虑三个方面:数据从哪来,数据到哪去,流中数据的类型。之后再根据自己的业务需求将不同功能的流拼接即可。

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

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

相关文章

家政预约小程序06服务展示

目录 1 首页展示2 团购详情总结 在家政小程序中,最重要的信息就是各项服务的内容。顾客通过服务的信息,了解家政公司可以提供什么样的服务以及相关的收费。本篇我们介绍一下服务展示功能如何开发。 1 首页展示 在首页我们已经开发了活动展示、服务分类展…

来自Java的“菱形继承“,你听说过吗?

一、菱形继承的概念 菱形继承又叫做钻石继承,指的是不同的类同时继承自相同的父类,存在一个子类同时继承这些不同的类,即我们常说的“多继承”问题。 例如:B类和C类分别继承A类,而D类同时继承B类和C类。 如此图所示 二…

输出相关命令

什么是输入输出重定向,就是用另外一个位置来代替它,默认输入为键盘,默认输出为终端窗口 管道能把一系列的命令连起来,|为命令符 cat file 历史查询 history 回车可以查到用过的命令。上下左右键可以回到之前命令或…

深入理解深度学习中的激活层:Sigmoid和Softmax作为非终结层的应用

深入理解深度学习中的激活层:Sigmoid和Softmax作为非终结层的应用Sigmoid 和 Softmax 激活函数简介Sigmoid函数Softmax函数 Sigmoid 和 Softmax 作为非终结层多任务学习特征变换增加网络的非线性实际案例 注意事项结论 深入理解深度学习中的激活层:Sigmo…

【算法专题】双指针算法之 移动零

欢迎来到CILMY23的博客 🏆本篇主题为:双指针算法之移动零 🏆个人主页:CILMY23-CSDN博客 🏆系列专栏:Python | C | C语言 | 数据结构与算法 | 贪心算法 | Linux 🏆感谢观看,支持的…

这3个AI自动生成绘画软件太好用啦!画画人必看

AI自动生成绘画软件正在成为艺术创作领域的一股新潮流,它们以其强大的功能和用户友好的设计,为艺术家们带来了前所未有的便利和创意空间。今天,我们将一起探索5款备受好评的AI自动生成绘画软件,它们不仅功能全面,而且操…

黎加厚教授:生成式人工智能对课程教材教法的影响

01 生成式人工智能与过去的信息技术有哪些不一样的地方 2023年,生成式人工智能(GenAI)犹如百年惊雷,改变了我对计算机的认识。最先让我折服的是AI绘画,我只需要把心中想象的场景用提示词详细描述,立刻就生…

Ubuntu执行命令出现乱码,菱形符号

1、问题描述 如题,Ubuntu执行命令出现乱码,菱形符号(见下图): 2、解决办法 export LC_ALLC 再运行就好了

comfyui电商场景工作流总结

eSheep(内测中) - 一站式的AIGC社区eSheep.com 是国内知名的AIGC在线画图网站,提供海量模型,并支持在线AI画图。用户会上传自己的AIGC作品到网站上,进行交流。eSheep让AIGC更轻松,让更多人在AIGC中找到快乐https://www.esheep.com/apphttps://openart.ai/workflows/all

RTSP/Onvif安防视频监控云平台EasyNVR重启后通道在线视频无法播放,接口报错502是什么原因?

EasyNVR安防视频云平台是旭帆科技TSINGSEE青犀旗下支持RTSP/Onvif协议接入的安防监控流媒体视频云平台。平台具备视频实时监控直播、云端录像、云存储、录像检索与回看、告警等视频能力,能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、W…

内存泄漏案例分享1—Activity或Fragment的内存泄漏

背景 笔者优化音乐App内存泄漏时候,遇到了3个典型内存泄漏,泄漏的内存为39kb,一次39KB看上去不多,积少成多很有可能导致OOM,值得重视。 PS:文末有优化方案,优化后内存减少至原先的150分之一。 …

电子画册制作技巧,从零基础到专业人士

电子画册作为一种新兴的视觉传达形式,正越来越受到大众的喜爱。从设计新手到专业人士,如何快速掌握电子画册的制作技巧,提升自己的创作水平呢? 一、明确设计目的和定位 制作电子画册前,首先要明确其设计目的和定位。画…

【编译原理】LR(0)分析

一、实验目的 LR(0)分析法是一种移进归约过程,能根据当前分析栈中的符号串,同时也不用向右查看输入串的符号就可唯一确定分析器的动作。通过对给定的文法构造LR(0)分析表和实现某个符号串的分析掌握LR(0)分析法的基本思想。 二、实验要求 实现LR(0)分…

推荐3款好用的AI智能写作工具

AI智能写作如今已经很成熟了,不仅有很多AI综合大模型可以实现AI写作,还有很多专门针对AI写作场景专门研发的垂直领域工具。 如果你在工作学习中也想提高写作效率,不妨试试下面3个国内可直接登录使用的AI写作工具,其中不乏有简单易…

【Java】IdentityHashMap 的使用场景

文章目录 前言1. Druid 应用场景2. IdentityHashMap 特性3. IdentityHashMap 同步化4. IdentityHashMap 处理key为空值后记 前言 最近有兴趣看一下 Druid 连接池怎么做连接管理的,看到一个类 IdentityHashMap ,这里记录一下使用场景。 1. Druid 应用场…

民国漫画杂志《时代漫画》第26期.PDF

时代漫画26.PDF: https://url03.ctfile.com/f/1779803-1248635183-9832d2?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了,截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十二)

课程地址: 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程,一套精通鸿蒙应用开发 (本篇笔记对应课程第 19节) P19《18.ArkUI组件-页面路由》 以访问京东页面为例,访问过的页面并没有消失,而是进入了…

[图解]企业应用架构模式2024新译本讲解01-事务脚本

1 00:00:00,220 --> 00:00:03,010 接下来,我们就要进入模式的讲解了 2 00:00:04,030 --> 00:00:05,940 这个是书里面的目录 3 00:00:06,230 --> 00:00:08,140 按照 4 00:00:08,150 --> 00:00:09,220 领域逻辑模式 5 00:00:09,230 --> 00:00:10,5…

一点点 cv 经验 1:cv方向、模型评估、输入尺寸、目标检测器设计

一点点 cv 经验 1:cv方向、模型评估、输入尺寸、目标检测器设计 cv 方向Pytorch数据集划分 模型评估误差偏差方差噪声 输入尺寸方法一:让数据适应模型方法二:修改模型适应数据方法三:划分Patch,分别处理 目标检测器结构…

探索演进:了解IPv4和IPv6之间的区别

探索演进:了解IPv4和IPv6之间的区别 在广阔的互联网领域中,设备之间的通信依赖于一组独特的协议来促进连接。前景协议中,IPv4(Internet 协议版本 4)和 IPv6(Internet 协议版本 6)是数字基础设施…