File—IO流

article/2025/8/4 2:07:33

因为变量,数组,对象,集合这些数据容器都在内存中,一旦程序结束,或者断电,数据就丢失了。想要长久保存,就要存在文件中(File)

文件可以长久保存数据。

文件在电脑磁盘中保存,即便断电,或者程序终止,文件中的数据也不会丢失。

File类

File是Java.io.包下的类,File类的对象,用于代表当前操作系统的文件(可以是文件、或文件夹)。

File其对象代表具体的文件/文件夹,只能操作文件本身,调用其提供的方法对象进行操作。

注意:File类只能对文件本身进行操作,不能读写文件里面存储的数据。(用IO流读取数据()可以读写文件,或网络中的数据)

File对象既可以代表文件,也可以代表文件夹。

File封装的对象

绝对路径:只要带盘符的都称为绝对路径
相对路径:不带盘符的,默认是你的idea工程下直接寻找文件的。一般用来找工程下的项目文件。都称为相对路径
 File file1 = new File("E:\\java\\gittecode\\Javaai\\file-io\\FileDemo1");File file2 = new File(" Javaai\\file-io\\FileDemo1");

File类提供的创建和删除文件的方法

注意:delete方法默认只能删除空文件夹,删除后的文件不会进入回收站。

File提供的遍历文件夹的方法

使用listFiles方法时的注意事项:
当主调是文件,或者路径不存在时,返回null
当主调是空文件夹时,返回一个长度为0的数组
当主调是一个有内容的文件夹时,将里面所有一级文件和文件夹的路径放在File数组中返回
当主调是一个文件夹,且里面有隐藏文件时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件
当主调是一个文件夹,但是没有权限访问该文件夹时,返回null

UTF-8字符集

是Unicode字符的一种编码方案,采取可变长编码方案,共分四个长度区:1个字节,2个字节,3个字节,4个字节。

英文字符,数字等之占一个字节(兼容标准ASCLL编码),汉字字符占用3个字符

ASCII字符集:只有英文,数字,符号等,占一个字节。

GBK字符集:汉字占2个字节,英文,数字占一个字节。

UTF-8字符集:汉字占3个字节,英文,数字占1个字节。

注意:1.字符编码时使用的字符集,和解码时使用的字符集必须一致,否则会出现乱码。

2.英文,数学一般不会乱码,因为很多字符集都兼容了ASCII编码。

字符集的编码,解码操作

使用程序对字符串进行编码和解码操作

对字符的编码

对字符的解码

public static void main(String[] args) throws UnsupportedEncodingException {String str = "宋可love";//byte[] bytes = str.getBytes();byte[] bytes = str.getBytes("GBK");System.out.println(bytes.length);System.out.println(Arrays.toString(bytes));//解码String s1 = new String(bytes);String s2 = new String(bytes,"GBK");System.out.println(s2);}

IO流

I指Input,称为输入流:负责把数据读到内存中去。

O指Output,称为输出流:负责写数据出去。

IO流按照流方向:分为输入流,输出流。

IO流按照流的内容:分为字节流(适合操作所有类型的文件),字符流(只适合操作纯文本文件)。

所以IO流分为四大体系: 

FileInputStream(文件字节输入流)

作用:以内存为基准,可以把磁盘文件中的数据以字节的形式读入到内存中去。

 注意事项:

1.使用FilelnputStream每次读取一个字节,读取性能较差,并且读取汉字输出会乱码。
2.使用FileInputStream每次读取多个字节,读取性能得到了提升,但读取汉字输出还是会乱码。

使用字节流读取中文要保证输出不乱码,可以定义一个与文件一样大的字节数组,一次性读取完文件的全部字节。

一次读取完全部文件

注意:如果文件过大,创建的字节数组也会过大,可能会引起内存溢出。

读取文本适合用字符流,字节流适合用做数据的转移,比如:文件复制

FIleOutStream(文件字节输出流)、

作用:以内存为基准,把内存中的数据以字节的形式写出到文件中去

字节输出流如何实现写出去的数据可以换行

.write("\r\n").getBytes());


http://www.hkcw.cn/article/rPcrPVjCUI.shtml

相关文章

【Zephyr 系列 2】用 Zephyr 玩转 Arduino UNO / MEGA,实现串口通信与 CLI 命令交互

🎯 本篇目标 在 Ubuntu 下将 Zephyr 运行在 Arduino UNO / MEGA 上 打通串口通信,实现通过串口发送命令与反馈 使用 Zephyr Shell 模块,实现 CLI 命令处理 🪧 为什么 Arduino + Zephyr? 虽然 Arduino 开发板通常用于简单的 C/C++ 开发,但 Zephyr 的支持范围远超 STM32…

最悉心的指导教程——阿里云创建ECS实例教程+Vue+Django前后端的服务器部署(通过宝塔面板)

各位看官老爷们,点击关注不迷路哟。你的点赞、收藏,一键三连,是我持续更新的动力哟!!! 阿里云创建ECS实例教程 注意: 阿里云有300元额度的免费适用期哟 白嫖~~~~ 注册了阿里云账户后&#x…

【Android】如何抓取 Android 设备的 UDP/TCP 数据包?

目录 前言理解抓包tcpdump 实时抓包Wireshark 解包抓包后的一些思考 前言 在真正接触 UDP/TCP 抓包之前,我一直以为这是一项高深莫测的技术。可当我们真正了解之后才发现,其实并没有那么复杂——不过如此。 所谓的大佬,往往只是掌握了你尚未…

VR看房系统,新生代看房新体验

VR看房系统的概念 虚拟现实(VirtualReality,VR)看房系统,是近年来随着科技进步在房地产行业中兴起的一种创新看房方式。看房系统利用先进的计算机技术模拟出一个三维环境,使用户能够身临其境地浏览和体验房源,无需亲自…

机器学习Day5-模型诊断

实现机器学习算法的技巧。当我们训练模型或使用模型时,发现预测误差很 大,可以考虑进行以下优化: (1)获取更多的训练样本 (2)使用更少的特征 (3)获取其他特征 &#xff…

STM32F103_Bootloader程序开发06 - IAP升级用的App.bin增加CRC32校验码,确保固件完整性,防止“变砖”

导言 《STM32F103_Bootloader程序开发05 - Keil修改生成文件的路径与文件名,自动生成bin格式文件》上一章节成功让Keil生成App.bin二进制文件,用于IAP升级。 为了保障IAP升级过程中的固件完整性,避免因损坏文件导致设备“变砖”,…

语言使用的国家概况统计

语言是文化的载体,也是沟通和协作的桥梁。随着全球化进程加快,了解主要语言的分布及其使用国家,对于数据分析师、产品经理、市场人员乃至技术开发者,都极为重要。本文将梳理全球几种主要语言(英语、法语、阿拉伯语、俄…

DeepSeek-R1-0528

深度思考能力强化​ DeepSeek-R1-0528 仍然使用 2024 年 12 月所发布的 DeepSeek V3 Base 模型作为基座,但在后训练过程中投入了更多算力,显著提升了模型的思维深度与推理能力。 更新后的 R1 模型在数学、编程与通用逻辑等多个基准测评中取得了当前国内…

MCU STM32搭配存储SD NAND(贴片式T卡)于智能皮电手环(Galvanic Skin Response, GSR 手环)的全方位评测

文章目录 卓越性能强化安全高效能效图形处理优势丰富集成特性模拟模块实时监控保障数据完整性提升安全性与可靠性测量原理采样率相关 在智能皮电手环及数据存储技术不断迭代的当下,主控 MCU STM32H750 与存储 SD NAND MKDV4GIL-AST 的强强联合,正引领行业…

处理知识库文件_编写powershell脚本文件_批量转换其他格式文件到pdf文件---人工智能工作笔记0249

最近在做部门知识库,选用的dify,作为rag的工具,但是经过多个对比,最后发现, 比较好用的是,纳米搜索,但是可惜纳米搜索无法在内网使用,无法把知识库放到本地,导致 有信息…

Java 基础 常见知识

基本数据类型 Java 中基本数据类型?对应的包装类?占多少字节? Java 中有 8 种基本数据类型: 6 种数字类型: 4 种整数类型:byte、short、int、long2 种浮点类型:float、double 1 种字符类型&a…

直播预告 | 聚焦芯必达|打造可靠高效的国产 MCU 与智能 SBC 汽车解决方案

随着汽车电子国产化快速推进,车规级 MCU 与 CAN/LIN SBC 作为车身控制的核心组件,正面临更高的安全与可靠性挑战。品佳集团将携手芯必达微电子,深入剖析国产 MCU/SBC/智能 SBC 的最新技术与应用,助力企业打造高性能、可量产的国产…

TF 卡 U1 与 U3 的核心差异解析:从速度标准到应用场景

在选购 TF 卡时,常常会看到 U1、U3 等标识,这些标识代表着不同的性能等级。最近不少客户询问 TF 卡 U1 和 U3 的区别,接下来将从多个维度为您详细解读,并通过对比图表直观呈现差异。 对比项目U1U3速度标准最低写入速度 10MB/s最低…

【Linux】vim编辑器

前言: 上文我们讲到了Linux中权限相关的指令【Linux】权限相关指令-CSDN博客 本文来讲解以下能让我们在Linux下编写代码的工具:vim 1.vim简单介绍 vim是Linux中一个较为常用的编辑器,也是Linux中上手难度最大的编辑器之一。有的同学可能知道v…

PKC6100A电流探头:攻克800V高压测试新利器

在新能源汽车行业快速发展的今天,电机控制器作为电动车辆的"大脑",其性能测试至关重要。然而,传统测试设备往往难以满足高压平台下的严苛测试需求。本文将为您揭秘普科科技PKC6100A电流探头如何帮助行业领先企业攻克测试难关。 一、…

【C++】STL详解(四)---Stack和Queue

文章目录 Stack定义方式使用方式 Queue定义方式使用方式 Stack Stack是一种容器&#xff0c;是基本的数据结构之一&#xff0c;特点是先进后出。 定义方式 方式一&#xff1a;普通定义方式 stack<int> st1;方式二&#xff1a; stack<int,vector<int>> …

换宽带ip地址会变吗?同一个宽带如何切换ip地址

在当今互联网时代&#xff0c;IP地址作为网络设备的"身份证"&#xff0c;其重要性不言而喻。许多用户在使用宽带时都会遇到这样的疑问&#xff1a;换宽带IP地址会变吗&#xff1f;同一个宽带如何切换IP地址&#xff1f;本文将深入探讨这一问题&#xff0c;帮助读者全…

WPF中一种使用Geometry图标的方法,用作制作图标按钮

1.去阿里巴巴矢量图标库或者哪里的图标库找到svg代码&#xff1a; 2.粘贴看一下&#xff1a; 3.摘取其中path属性&#xff0c;创建Geometry对象&#xff1a; 4.然后可以在按钮中使用&#xff1a; 感觉东西太多了&#xff0c;学不玩了

第二代IndoorLink头戴式无线讲解器,远距+动感,更好用了

在讲解器市场中&#xff0c;IndoorLink&#xff08;音德聆客&#xff09;头戴式无线讲解器一直具有鲜明的辨识度&#xff0c;张扬个性、动感自由的特点&#xff0c;受到很多用户欢迎。经过近一年的精细打磨后&#xff0c;IndoorLink头戴式迎来了全新升级。 日前&#xff0c;深…