[java基础揉碎]文件IO流

news2024/12/23 7:30:12

目录

文件

什么是文件

 文件流​编辑

常用的文件操作 

创建文件方式一 

创建文件方式二 

创建文件方式三

tip:为什么new file 了还有执行createNewFile?new File的时候其实是在内存中创建了文件对象, 还没有在磁盘中, 当执行createNewFile的时候才是往磁盘中写入​编辑

获取文件的信息 (常用)

目录的操作 (windows文件夹), 在java中目录也被当作一个文件,方式使用没有区别

Io流

 io原理即流的分类

​编辑

字节流常用子类

 文件输入流​编辑

文件输出流

文件拷贝

字符流

FileReader

FileWriter

close和flush都可以实现写入,但是close相等于flush我刷新还有个关闭

 节点流和处理流(包装流)

​编辑

处理流修饰器模式模拟

节点流和处理流的区别

BufferedReader使用方法 

 BufferedWriter使用方法 

字节处理流 

字节处理流视频拷贝使用方法 

对象流

​编辑

对象流的使用

​编辑

对象流的细节 

标准输入输出流 

转换流

InputStreamReader上面的问题用转换流后得到解决 

 OutputStreamWriter

字节打印流 

字符打印流

Properties


​​​​​​​文件

什么是文件

 文件流

常用的文件操作 

创建文件方式一 

 

创建文件方式二 

 

创建文件方式三

这里这样写也是可以的,反斜杠

tip:为什么new file 了还有执行createNewFile?
new File的时候其实是在内存中创建了文件对象, 还没有在磁盘中, 当执行createNewFile的时候才是往磁盘中写入

获取文件的信息 (常用)

 

目录的操作 (windows文件夹), 在java中目录也被当作一个文件,方式使用没有区别

 

Io流

 io原理即流的分类

字节流和字符流那个效率高呢?字符流(应用于文本文件等), 因为字符流的单位比字节大, 至于一个字符等于多少个字节需要看他的编码格式; 那为什么还用字节流呢? 因为还有一些二进制文件,例如声音文件,视频文件, word文件

 

字节流常用子类

 文件输入流

演示读取文件(这种方法不能有汉字,因为是一个字节一个字节读的, 汉字是三个字节,只读了一个, 就会乱码)
单个字节的读取,效率比较低

 

改为字节数组的方式,效率比较快

文件输出流

 

文件拷贝

 

一定要使用write(buf,0,readLen)这个方法写, 如果用 write(buf),在最后几个字节传输长度不够数组长度但是还是传了这么多的时候,图片不会显示

 

此时运行可能会报这个错,这是c盘需要管理员权限才能访问 , 所以可以改用其他盘上面测试 

 

字符流

FileReader

第二种方式, 效率会高一点

FileWriter

 

不关流不会成功写入 

 

 

第二种数组写入

第三种写入

 

第四种写入 

第五种写入 

 

close和flush都可以实现写入,但是close相等于flush我刷新还有个关闭

 节点流和处理流(包装流)

因为BufferedWriter的构造器传进去的是Writer, 也就是说继承了 Writer的子类都可以传进去, 这也是一种设计模式叫修饰器模式

处理流修饰器模式模拟

 

现在上面的FileReader和StringReader相当于节点流, 对单个数据源类别进行读取, 如果我们要扩展怎么扩展呢

将Reader作为一个属性, 同时通过构造器传进来, 因为继承了Reader就可以调用它的方法

现在给Reader_加两个未实现的方法

 在处理流里面, 调用传进来的字节流的方法

在处理流对象中就可以进行调用到字节流的读取

 

扩展:上面是示意写了两个方法, 其实可以统一为read:

其他的对应跟着改, 让他动态绑定去实现 

节点流和处理流的区别

 

BufferedReader使用方法 

 BufferedWriter使用方法 

文本文件拷贝的案例 

字节处理流 

字节处理流视频拷贝使用方法 

对象流

对象流的使用

序列化

 

反序列化

 

对象流的细节 

标准输入输出流 

 

转换流

字节转换为字符

 案例:

目前有一个utf-8的文件,去读取里面文件内容, 可以看到能正确读取

把它转为国标码之后(这个国标码每个国家有自己的国标码, 根据当前系统来看的, 如果当前系统用的是gbk那么国标码就是gbk)

 现在再来读取就会乱码

具体实现

 

InputStreamReader
上面的问题用转换流后得到解决 

 

 OutputStreamWriter

 

字节打印流 

 

 打印到文件

字符打印流

 打印到显示器, 因为传入的是标准输出

输出到指定文件中去 

如果不关流, 文件是进不去的 

 

Properties

传统的方式读取

传统的方法如果我们要获取指的的值,只能自己写判断, 其他的不要 

 用Properties

 

 

 

 

 

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

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

相关文章

申请的商标名称相同或近似,如何解决!

最近遇到一些首次申请注册商标的主体,基本想的名称都是两个字或或者两个字加通用词,还有用的行业描述词或缺乏显著特征词,这样去申请注册商标,普推知产老杨分析这样去直接申请注册大概率驳回。 两个字基本上注册的差不多了&#…

推券客CMS淘宝优惠券网站源码

推券客CMS淘宝优惠券网站源码是一个以PHPMySQL进行开发的PHP淘宝客优惠券网站。支持电脑站、手机站以及微信公众号查券。支持多级代理返利和阿里妈妈最新的渠道管理等功能。 五大优势 一、全开源 推券客cms网站程序数据库完全开源,目前市场上基本都是以下2种淘宝客系统 第一…

Redis:redis基础

Redis Remote Dictionary Service即远程字典服务 一个基于内存的key-value结构数据库,在开发中常常作为缓存存储不经常被改变的数据 基于内存存储,读写性能高 在企业中应用广泛 Redis介绍 用C语言开发的开源高性能键值对数据库,可以达到10w的qps,可以存储丰富的value类型…

从alpine构建预装vcpkg的docker image用于gitea actions CI

动机 想要构建一个基于vcpkg的交叉编译容器平台用于cpp项目的CI(自动集成),此处仅提供最基础的image,amd64的机子上构建完成后大小为533兆(着实不小😓),各位看官可以在此基础上自行…

Gradle的学习

1.1 Gradle的优势 一款最新的,功能最强大的构建工具,用它逼格更高 使用Groovy或Kotlin代替XML,使用程序代替传统的XML配置,项目构建更灵活 丰富的第三方插件,让你随心所欲使用 完善Android,Java开发技术体系 1.2 …

Filebeat进阶指南:核心架构与功能组件的深度剖析

🐇明明跟你说过:个人主页 🏅个人专栏:《洞察之眼:ELK监控与可视化》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是ELK 2、FileBeat在ELK中的角色 二、Fil…

树莓派4B 学习笔记1:TF卡系统盘烧录_初次启动_远程端连接配置

今日开始学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi) TF卡系统盘烧录_初次启动_远程端连接配置 目录 格式化SD卡: 烧录系统Win32DiskImager: Raspberry Pi Imager镜像烧写: 树莓派官网资料…

教育装备之先导小型五轴加工中心

随着制造业的快速发展和技术的不断进步,对高端技术人才的需求日益增长。五轴联动技术作为解决异性复杂零件高效优质加工问题的重要手段,受到了广泛关注。因此,培养掌握五轴联动技术的专业人才显得尤为重要。 先导小型五轴加工中心提供了真实的…

「数据结构」队列

目录 队列的基本概念 队列的实现 头文件queue.h 实现函数接口 1.初始化和销毁 2.出队列和入队列 3.获取队头元素和队尾元素 4.队列长度判空 后记 前言 欢迎大家来到小鸥的博客~ 个人主页:海盗猫鸥 本篇专题:数据结构 多谢大家的支持啦&#xff…

对比表征学习(一)Contrastive Representation Learning

对比表征学习(二)Sentence Embedding 主要参考翁莉莲的Blog,本文主要聚焦于对比损失函数 对比表示学习(Contrastive Representation Learning)可以用来优化嵌入空间,使相似的数据靠近,不相似的数…

玩转STM32-通用同步/异步收发器USART(详细-慢工出细活)

CPU与外围设备之间的信息交换或计算机与计算机之间的信息交换称为通信。基 本的通信方式有两种,即并行通信和串行通信。文章目录 一、串行通信基础1.1 串行通信的方式1.2 串行通信的数据传输形式1.3 波特率 二、STM32的USART的结构特征(了解)…

采集EthernetIP IO从站设备数据 转 profinet IO协议项目案例

1 文档说明 设置网关采集EthernetIP IO设备数据把采集的数据转成profinet IO协议转发给其他系统。 2 准备工作 仰科网关。支持采集EthernetIP IO数据,profinet IO协议转发。电脑。IP设置成192.168.1.198,和网关在同一个网段。网线、12V电源。 3 网关…

MySQL8报错Public Key Retrieval is not allowedz 怎么解决?

问题描述 当我们使用数据库管理工具连接mysql8的时候,可能遇到报错: Public Key Retrieval is not allowed 解决办法 1、在连接属性中配置allowPublicKeyRetrieval设置为true 2、在连接URL中加上配置allowPublicKeyRetrieval为true

《软件方法(下)》8.3.4.6 DDD话语“聚合”中的伪创新(1)

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 8.3 建模步骤C-2 识别类的关系 8.3.4 识别关联关系 8.3.4.6 DDD话语“聚合”中的伪创新 DDD话语中也有“聚合”。Eric Evans的“Domain-Driven Design: Tackling Complexity in the…

「光储充放」一体充电站-一文读懂光储充放充电站

“光储充放”一体充电站作为一种储能充电的新形式渐渐走进人们的生活,全国很多地区都开始陆续投放运营“光储充放”一体充电站,今天的这篇文章,就带大家全面了解“光储充放”这一新型充电站。 头图来源 | 视觉中国 01 政策背景 早在2020年…

43-2 Linux入侵排查实验

环境准备: 老规则,我没有靶场就自己搭建了类似, 这里准备一台CentOS 7虚拟机作为受害者,然后使用CS制作木马并在受害者主机上线,具体过程可以看我之前写的一篇文章: 黑客必备利器:如何在系统上安装和使用 CobaltStrike(简称:CS)_cobalt strike-CSDN博客 最终的效果…

【ARFoundation自学03】AR Point Cloud 点云(参考点标记)功能详解

和平面识别框架一样 1为XR Origin添加AR Point Cloud Manager组件 然后你的ar应用就具备了点云识别功能,就这么简单 2.可视化这些云点 创建一个美术效果的预制体,人家提供了预设模板 然后拖到仓库(ASSETS)创建预制体&#xff…

红酒与不同烹饪方法的食物搭配原则

红酒与食物的搭配是一门艺术,而不同烹饪方法的食物与红酒的搭配也有其与众不同之处。红酒与食物的搭配不仅涉及到口感、风味和营养,还与烹饪方法和食物质地等因素息息相关。云仓酒庄雷盛红酒以其卓着的品质和丰富的口感,成为了实现完善搭配的…

常用压力、流量单位换算表

一、压力为单位面积所承受的力 压力:绝对压力 、表压力 、大气压力。相互关系:绝对压力表压力大气压力 绝对压力:当压力表示与完全真空的差。测量处的实际压力。 表压力:当表示其气体数值与该地域大气压力的差值。 大气压力:由大气重量所…

JAVA学习·String类的常用方法

String 类及其创建 String 类的创建 String 类是 Java 内置的一个类,其完全限定类名是java.lang.String。想要创建一个字符串有多重方式,比如创建字符串"Hello": String s1 "Hello"; // 字面量创建 String s2 new St…