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

File—IO流

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

相关文章:

  • mysql-mysql源码本地调试
  • 基于element-UI 实现下拉框滚动翻页查询通用组件
  • 查看·电脑安装·的 .NET 版本
  • Numpy 数组操作:高效的数据处理利器
  • STUSB4500 PPS(PD3.0)快充SINK模块——应用 解析
  • React和原生事件的区别
  • C++ 模版复习
  • LoRA:高效微调预训练模型的利器
  • 企业数字化转型的7个难点
  • t014-项目申报管理系统 【springBoot 含源码】
  • 7.atlas安装
  • 气镇阀是什么?
  • 大模型长对话中上下文无法承载全部历史,如何压缩或提取重点
  • RAG应用:交叉编码器(cross-encoder)和重排序(rerank)
  • 信息安全管理与评估2025山东卷
  • Root权限:解锁Android的终极力量
  • LLM + RAG + Vanna 综合实战
  • 移动端图片浏览插件
  • 机器视觉视觉中的棋盘格到底是什么?为什么是棋盘格?
  • python训练 60天挑战-day40
  • 做网站的服务器用什么系统/百度无广告搜索引擎
  • 2016网站优化/指数基金是什么意思
  • 谷歌风格wordpress/seo产品优化推广
  • 上海推广网站公司/网站怎样做推广
  • 动漫网站开发设计思想/游戏推广员
  • 乡村旅行网站开发的毕业论文/baidu百度