[java基础揉碎]文件IO流
目录
文件
什么是文件
文件流编辑
常用的文件操作
创建文件方式一
创建文件方式二
创建文件方式三
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







相关文章:
[java基础揉碎]文件IO流
目录 文件 什么是文件 文件流编辑 常用的文件操作 创建文件方式一 创建文件方式二 创建文件方式三 tip:为什么new file 了还有执行createNewFile?new File的时候其实是在内存中创建了文件对象, 还没有在磁盘中, 当执行createNewFile的时候才是往磁盘中写入编辑 …...
[面经] 西山居非正式面试(C++)
前言 这次面试是我第一次面试,而且我也并没有做好准备,应该说几乎就是临场发挥,面试的时间与我推测的相差太大,几乎就是做完简历的下一天就马上去面试了,有不少地方自己没能很好的答出,故做此记录。 关于…...
SOLIDWORKS教育版代理商应该如何选择?
SOLIDWORKS作为目前流行的三维设计软件在工程设计,制造和建筑中有着广泛的应用前景。教育版SOLIDWORKS软件是学生及教育机构学习教学的理想平台。 下面介绍几个挑选SOLIDWORKS教育版代理的关键要素: 1、专业知识与经验:代理商应掌握SOLIDWORKS等软件的丰…...
翻译《Use FILE_SHARE_DELETE in your shell extension》
在写 《翻译《The Old New Thing》- What did MakeProcInstance do?》 文章时,了解到了 Michael Geary ,他也有不少优秀的技术文章,现翻译一篇关于文件操作的细节的文章 原文 Use FILE_SHARE_DELETE in your shell extension | mg.tohttps:…...
使用Python发送电子邮件
大家好,当我们需要迅速、方便地与他人沟通时,电子邮件是无疑是一种不可或缺的通信工具。无论是在个人生活中还是工作场合,电子邮件都是我们日常生活中的重要组成部分。它不仅能够传递文字信息,还可以发送附件、链接和嵌入式多媒体…...
Linux-CentOS7-解决vim修改不了主机名称(无法打开并写入文件)
Linux-CentOS7-修改主机名称 修改之后使用强制保存退出也不行。 解决办法: 使用hostnamectl命令进行修改 查看系统主机名和信息: hostnamectl这条命令会显示当前系统的主机名、操作系统信息、内核版本、架构信息等相关信息。 修改系统主机名࿱…...
【RuoYi】使用代码生成器完成CRUD操作
一、前言 前面,介绍了如何下载和启动我们的RuoYi框架。为了让小伙伴们认识到ruoyi的强大,那么这篇博客就介绍一下如何使用ruoyi的代码生成器,自动生成前端页面以及后端的对应数据库表的CRUD操作!!!真的很强…...
七个很酷的GenAI LLM技术性面试问题
不同于互联网上随处可见的传统问题库,这些问题需要跳出常规思维。 大语言模型(LLM)在数据科学、生成式人工智能(GenAI)和人工智能领域越来越重要。这些复杂的算法提升了人类的技能,并在诸多行业中推动了效率和创新性的提升,成为企业保持竞争…...
SARscape雷达图像处理软件简介
合成孔径雷达(SAR)拥有独特的技术魅力和优势,渐成为国际上的研究热点之一,其应用领域越来越广泛。SAR数据可以全天候对研究区域进行量测、分析以及获取目标信息。高级雷达图像处理工具SARscape,能让您轻松将原始SAR数据…...
开源博客项目Blog .NET Core源码学习(23:App.Hosting项目结构分析-11)
本文学习并分析App.Hosting项目中后台管理页面的标签管理页面、轮播图维护页面。 标签管理页面 标签管理页面用于显示、检索、新建、编辑、删除标签数据,以便在前台页面的首页及文章专栏等页面显示标签数据。标签管理页面附带一新建及编辑页面,以支撑新…...
一.ffmpeg 将内存中的H264跟PCM 数据流合成多媒体文件
在有一些嵌入式平台中,H264数据流一般来自芯片内部的硬编码器, AAC音频数据则是通过采集PCM进行软编码,但是如何对它实时进行封装多媒体文件 ,参考ffmpeg example,花了一些时间终于实现了该功能。 流程图如下…...
C++ (week5):Linux系统编程3:线程
文章目录 三、线程1.线程的基本概念①线程相关概念②我的理解 2.线程的基本操作 (API)(1)获取线程的标识:pthread_self(2)创建线程:pthread_create()(3)终止线程①pthread_exit():当前线程终止,子线程主动退出②pthread_cancel()&…...
二叉树习题精讲-相同的树
相同的树 100. 相同的树 - 力扣(LeetCode)https://leetcode.cn/problems/same-tree/description/ /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ bool i…...
「架构」模型驱动架构设计方法及其运用
本文通过一个实际的软件项目案例,深入探讨了模型驱动架构(MDA)在软件开发全过程中的应用。MDA是一种以模型为中心的设计方法,它通过分离计算、数据和业务逻辑,提高了软件的可维护性、可扩展性和可移植性。文章将从需求分析、架构设计、实现与测试三个阶段出发,分析MDA的应…...
基于 React + Nest 全栈开发的后台系统
Xmw Admin 基于 React Nest 全栈开发的后台系统 🪴 项目简介 🎯 前端技术栈: React、Ant Design、Umi、TypeScript🎯 后端技术栈: Nest.js、Sequelize、Redis、Mysql😝 线上预览: https://r…...
jQuery值操作例子 (代码)
直接上代码 <!DOCTYPE html> <html><head></head><body><div id"x1">例子</div><script src"js/jquery-3.7.1.min.js"></script><script>console.log($("#x1").text()) // 在浏览…...
Next-Admin,一款基于Nextjs开发的开箱即用的中后台管理系统(全剧终)
hello,大家好,我是徐小夕。之前和大家分享了很多可视化,零代码和前端工程化的最佳实践,今天继续分享一下最近开源的 Next-Admin 项目的最新更新。 这次更新是1.0版本最后一次更新,也根据用户反馈的问题做了一些优化&am…...
HTML5 文件处理及应用
HTML5 文件处理及应用 目录 核心对象文件信息读取文件拖放FileReaderSyncFileWriter APIBlob URL与 revokeObjectURL()跨源资源共享 (CORS)HTML5文件File API为浏览器提供了与用户计算机上的文件进行交互的能力,使得Web应用程序能够在客户端直接处理文件数据,而无需依赖服务…...
逻辑分析仪的调试使用
调试软件下载:点击跳转 一、接线 逻辑分析仪 设备 GND --- GND CHX(数据通道) --- 通信引脚 二、数据采集 图中两个可以选择数字大小的地方分别表示 采样深度 (10M Samples&a…...
AI学习指南数学工具篇-Python中的凸优化库
AI学习指南数学工具篇-Python中的凸优化库 在人工智能和机器学习领域,凸优化是一个非常重要的数学工具。它可以帮助我们解决各种问题,包括线性规划、二次规划、半定规划等。而在Python中,有一个非常优秀的凸优化库,即CVXPY。本文…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...




