当前位置: 首页 > news >正文

打印流、转换流、数据流 、随机访问流

Java知识点总结:想看的可以从这里进入

目录

    • 5、打印流
    • 6、转换流
    • 7、数据流
    • 8、随机访问流

5、打印流


实现将基本数据类型的数据格式转化为字符串输出,它们提供了一系列重载的print()和println()方法,用于多种数据类型的输出,这种流不会出现IOException异常。

  • PrintWriter:在Java的IO流中提供了字符输出的类PrintWriter,它具有自动刷新缓冲字符输出流,按行写出字符串,提供println()方法用于自动换行。

    PrintWriter fw = new PrintWriter(file);
    
  • PrintStream:在Java的IO流中提供了字节输出的类PrintStream,它打印的所有字符都使用平台的默认字符编码转换为字节。在需要写入字符而不是写入字节的情况下,应该使用 PrintWriter 类。

    System.out返回的是PrintStream的实例

    PrintStream printStream = new PrintStream(file);
    
public class Io {public static void main(String[] args) throws Exception{//创建文件对象File file1 = new File("d:/mydata/a.txt");File file2 = new File("d:/mydata/acopy.txt");try (FileReader fr = new FileReader(file1);BufferedReader in = new BufferedReader(fr);PrintWriter fw = new PrintWriter(file2);	//字符输出流){String line;//一次读取一行,读到换行时结束while((line=in.readLine())!=null){fw.println(line);			//println直接换行,这种比使用文件字符流、缓冲字符流更方便}} catch (Exception e) {e.printStackTrace();}}
}

6、转换流


在Java中提供了将字节流转换成字符流的转换流,InputStreamReaderOutputStreamWriter。流在转换后,读取数据时会存在编码的问题。

计算机上显示的信息在计算机都是以二进制形式保存的,所以必须按照一定的规则将二进制数据解析并显示,如果规则不正确则会导致乱码问题。字符集 Charset:是一个系统支持的所有字符的集合,包括各国家文字、标点符号、图形符号、数字等。常见的字符集有ASCII、GBK、Unicode(常用的为UTF-8)等。

常见的编码表

ASCII:美国标准信息交换码。用一个字节的7位可以表示。

ISO8859-1:拉丁码表。欧洲码表用一个字节的8位表示。

GB2312:中国的中文编码表。最多两个字节编码所有字符

GBK:中国的中文编码表升级,融合了更多的中文文字符号。最多两个字节编码

Unicode:国际标准码,融合了目前人类使用的所有字符。为每个字符分配唯一的字符码。所有的文字都用两个字节来表示。

UTF-8:变长的编码方式,可用1-4个字节来表示一个字符。

在接收键盘输入System.in时,就是使用的转换流,将字节转换成字符流,再使用BufferedReader

  1. InputStreamReader:将InputStream转换为Reader
  2. OutputStreamWriter:将Writer转换为OutputStream
FileInputStream fis = new FileInputStream(file1);	//文件字节流
InputStreamReader is = new InputStreamReader(fis,"utf-8"); //将字节流转为字符流
BufferedReader in = new BufferedReader(is);        //再使用缓冲流FileOutputStream fos = new FileOutputStream(file2);
OutputStreamWriter os = new OutputStreamWriter(fos,"utf-8");
BufferedWriter out = new BufferedWriter(os);

7、数据流


数据流(DataInputStream、DataOutputStream)专门用来操作基本数据类型,上述的字符流和字节流不能直接操作像long,float,double,boolean这些数据类型,而数据流对八种基本数据类型都可以操作。

数据流本身也属于一种字节流,属于处理流,写入的是二进制,通过对应输出流输出所需数据。

FileInputStream fis = new FileInputStream(file1);
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream in = new DataInputStream(bis);	//数据流FileOutputStream fos = new FileOutputStream(file2);
BufferedOutputStream bos = new BufferedOutputStream(fos);
DataOutputStream out = new DataOutputStream(bos);		//数据流

DataOutputStream提供的一些对应数据类型的方法

image-20210302211827571

DataInputStream提供的读取方法,读取的类型要一致,写入的顺序和读取的顺序一致

image-20210302212332238

8、随机访问流


RandomAccessFile 声明在java.io包下,直接继承于java.lang.Object类,它实现了DataInput、DataOutput这两个接口,所以它同时拥有读写的功能。

它采用随机访问,程序可以直接跳到文件的任意地方来读、写文件,它内部采用一个指针来记录当前读取的位置,而RandomAccessFile之所以可以随机访问,就是因为能自由的移动该指针。

  • ong getFilePointer():获取指针的当前位置
  • void seek(long pos):将指针移动到指定的位置
//构造方法,其中mode 参数指定了RandomAccessFile 的访问模式:
//1、r: 以只读方式打开,不会创建文件
//2、rw:打开以便读取和写入,如果文件不存在会创建文件
//3、rwd:打开以便读取和写入;同步文件内容的更新
//4、rws:打开以便读取和写入;同步文件内容和元数据的更新
public RandomAccessFile(String name, String mode)throws FileNotFoundException{this(name != null ? new File(name) : null, mode);
}
public RandomAccessFile(File file, String mode)throws FileNotFoundException{this(file, mode, false);
}

其实这个类通常用来下载,我们在下载时,会创建两个文件,一个文件是与被下载文件大小相同的空文件,另一个文件用来记录指针的位置,如果这次下载暂停后,下次继续下载时可以通过记录的指针位置继续上次的下载。

相关文章:

打印流、转换流、数据流 、随机访问流

Java知识点总结:想看的可以从这里进入 目录5、打印流6、转换流7、数据流8、随机访问流5、打印流 实现将基本数据类型的数据格式转化为字符串输出,它们提供了一系列重载的print()和println()方法,用于多种数据类型的输出,这种流不会…...

Java的4种访问权限?

1、public: 所修饰的类、变量、方法,在内外包均具有访问权限;2、protected: 这种权限是为继承而设计的,protected所修饰的成员,对所有子类是可访问的,但只对同包的类是可访问的,对外…...

APP任务模块功能借助php-resque实现业务解耦

先上设计图 说明:任务模块分一次性任务和每日任务,可能还包括男女用户任务区分 处理步骤: 一、同步任务数据库 1.1、任务列表数据库 1.2、完成任务数据库 二、搭建即时消息队列 一、composer require resque/php-resque二、因为服务器red…...

怎么做,才能在职场中晋升?

1 主动原则:主动做事 工作要积极主动,刚进入职场的同学,以为“服从命令听指挥”“领导指哪打哪”就是积极主动,结果易养 1.1 不好习惯 ① 认为主管肯定会帮你搞定晋升 你可能非常信任主管,认为自己只要把主管安排的…...

Vulnhub靶场----2、DC-2

文章目录一、环境搭建二、渗透流程三、思路总结一、环境搭建 DC-2下载地址:https://download.vulnhub.com/dc/DC-2.zip kali:192.168.144.148 DC-2:192.168.144.150 添加hosts文件:192.168.144.150 DC-2 二、渗透流程 nmap -A -…...

Java 基础(3)—synchornized 关键字简单理解

一、synchronized 修饰同步代码块 用 synchronized 修饰代码段作为同步锁,代码如下: public class LockDemo {public Object object new Object();public void show(){synchronized (object) {System.out.println(">>>>>>hell…...

【Linux】调试工具gdb的使用

环境:centos7.6,腾讯云服务器Linux文章都放在了专栏:【Linux】欢迎支持订阅🌹前言在前文,我们已经讲解了vim工具以及gcc/g的使用,我们可以进行编写代码以及编译代码了,但是还没有学习如何在Linu…...

大数据知识图谱项目——基于知识图谱的医疗知识问答系统(详细讲解及源码)

基于知识图谱的医疗知识问答系统 一、项目概述 本项目基于医疗方面知识的问答,通过搭建一个医疗领域知识图谱,并以该知识图谱完成自动问答与分析服务。本项目以neo4j作为存储,基于传统规则的方式完成了知识问答,并最终以关键词执…...

威马汽车:跃马扬鞭未竟,鞍马劳顿难行?

“活下去,像牲口一样地活下去。” 威马汽车创始人、董事长兼CEO沈晖1月在社交媒体上分享的电影台词,已然成为威马近况的真实写照。 来源:新浪微博威马汽车沈晖Freeman 最近,网上出现了大量关于“威马汽车将实施全员停薪留职”的…...

【网络】网络基础

🥁作者: 华丞臧. 📕​​​​专栏:【网络】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 推荐一款刷题网站 👉 LeetCode刷题网站 文章…...

Linux系统之Uboot、Kernel、Busybox思考之三

目录 三 内核的运行 5-中断子系统 6 锁、延迟与原子上下文 7 内存管理子系统 8 驱动的两类框架 三 内核的运行 5-中断子系统 中断子系统的数据结构及设计思想。 中断子系统需要解决中断管理的问题。 如果系统中断较少的话,其管理就不用设计这样一个中断子系统这…...

FPGA 20个例程篇:20.USB2.0/RS232/LAN控制并行DAC输出任意频率正弦波、梯形波、三角波、方波(一)

在最后一个例程中笔者精挑细选了一个较为综合性的项目实战,其中覆盖了很多知识点,也是从一个转产产品中所提炼出来的,所以非常贴近实战项目。 整个工程实现了用户通过对上位机PC端人机界面的操作,即可达到控制豌豆开发并行DAC输出…...

性能测试学习和性能瓶颈分析路线

很多企业招聘都只写性能测试,会使用LR,jmeter工具。其实会使用jmeter和LR进行性能测试还只是性能测试的第一步,离真正的性能测试工程师还很远,笔者也还在路上 .。 性能测试,都是要求测试系统性能,系统自然…...

达梦数据库(DM8)集成使用 Geoserver(2.22.2) 以及其他对应版本详解

达梦数据库(DM8)集成使用 Geoserver(2.22.2) 以及其他对应版本详解系统环境版本Geoserver 驱动对应版本达梦 8 集成 Geoserver 过程试错过程问题总结项目需要国产化,选择使用达梦数据库,在技术测试阶段&…...

全开源无加密的RuleApp文章社区APP客户端源码

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 开源无加密的文章社区客户端源码分享 RuleApp文章社区,VIP会员,写作投稿积分商城,付费模块集成,多平台兼容这是一款开源免费,界…...

基于springboot校园二手市场平台

一、项目简介 本项目是一套基于springboot校园二手市场平台,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目可以直接作为bishe使用。 项目都经过严格调试,确保…...

维度建模基本流程总结

一、维度建模基本流程图数据RD进行业务调研和数据现状调研,产出符合相关模版规范的业务知识文档和数据现状文档。数据PM也会调研相关业务产出需求设计文档,三方参与需求评审,评审通过后基建数据RD进行需求拆解,产出技术方案&#…...

RocketMQ事务消息

RocketMQ事务消息 RocketMq提供的一种高级消息类型,支持在分布式场景下面保障消息生产和本地事务的一致性 生产者将消息发送到服务端服务端将消息持久化成功后,向生产者返回ACK确认消息发送成功,此时消息状态为待投递,这种状态下的消息称之为…...

大数据处理 - 双层桶划分

分桶法简介其实本质上还是分而治之的思想,重在“分”的技巧上!适用范围: 第k大,中位数,不重复或重复的数字基本原理及要点: 因为元素范围很大,不能利用直接寻址表,所以通过多次划分,逐步确定范围…...

NFC标签读写器隐私协议

【标签读写器】(以下简称“我们”)深知个人信息对您的重要性,并会尽全力保护您的个人信息安全可靠。我们致力于维持您对我们的信任,恪守以下原则,保护您的个人信息:权责一致原则、目的明确原则、选择同意原…...

像素剧本圣殿惊艳案例:故障艺术标题下生成的赛博朋克短剧完整场次

像素剧本圣殿惊艳案例:故障艺术标题下生成的赛博朋克短剧完整场次 1. 像素剧本圣殿创作工具介绍 Pixel Script Temple(像素剧本圣殿)是一款基于Qwen2.5-14B-Instruct深度微调的专业剧本创作工具。这个独特的创作平台将先进的AI推理能力与复…...

Windows音频路由终极指南:如何免费实现应用程序级音频设备管理

Windows音频路由终极指南:如何免费实现应用程序级音频设备管理 【免费下载链接】audio-router Routes audio from programs to different audio devices. 项目地址: https://gitcode.com/gh_mirrors/au/audio-router 你是否曾遇到过这样的困扰:在…...

3步上手ComfyUI-LTXVideo:让文字和图片动起来的AI视频魔法

3步上手ComfyUI-LTXVideo:让文字和图片动起来的AI视频魔法 【免费下载链接】ComfyUI-LTXVideo LTX-Video Support for ComfyUI 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-LTXVideo 想不想把你的文字描述变成生动的视频?或者让静…...

StructBERT中文相似度模型保姆级教学:如何用TSNE可视化高维句向量空间分布

StructBERT中文相似度模型保姆级教学:如何用TSNE可视化高维句向量空间分布 1. 引言:为什么需要可视化句向量? 当你使用StructBERT这样的模型计算句子相似度时,你得到的只是一个0到1之间的数字。这个数字告诉你两个句子“有多像”…...

GDBFrontend表达式求值器深度解析:多窗口实时变量监控技巧

GDBFrontend表达式求值器深度解析:多窗口实时变量监控技巧 【免费下载链接】gdb-frontend ☕ GDBFrontend is an easy, flexible and extensible gui debugger. Try it on https://debugme.dev 项目地址: https://gitcode.com/gh_mirrors/gd/gdb-frontend GD…...

背负式静电喷雾机的设计【solidworks三维、5张cad图纸论文、答辩稿】

背负式静电喷雾机作为现代农业装备中的关键设备,其设计需兼顾轻量化、高效性与操作便捷性。通过SolidWorks三维建模技术,可实现整机结构的虚拟装配与干涉检查,优化各部件的空间布局。例如,药箱与喷雾系统的集成设计需平衡容量与重…...

Mi-Create:零基础打造个性化小米穿戴表盘的完整实战指南

Mi-Create:零基础打造个性化小米穿戴表盘的完整实战指南 【免费下载链接】Mi-Create Unofficial watchface creator for Xiaomi wearables ~2021 and above 项目地址: https://gitcode.com/gh_mirrors/mi/Mi-Create Mi-Create是一款专为小米穿戴设备用户打造…...

从ET1100迁移到AX58100:我的EtherCAT从站代码需要重写多少?

从ET1100迁移到AX58100:EtherCAT从站代码重构实战指南 当你的产品线需要从百兆升级到千兆EtherCAT网络,或者要支持时间敏感网络(TSN)功能时,从经典的ET1100切换到AX58100几乎是必然选择。但作为经历过完整迁移周期的开发者,我必须…...

Fish-Speech 1.5效果展示:双自回归Transformer架构,语音质量惊艳

Fish-Speech 1.5效果展示:双自回归Transformer架构,语音质量惊艳 你听过那种一听就知道是机器人的AI语音吗?生硬、刻板,每个字都像从模板里抠出来的,毫无生气。再听听这个:“今天天气真好,适合…...

GTX 1050 Ti显卡的设备推理+模拟器运行时的显存占用实测报告!

...