File—IO流

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

文件可以长久保存数据。

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

File类

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

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

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

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

File封装的对象

复制代码
绝对路径:只要带盘符的都称为绝对路径
相对路径:不带盘符的,默认是你的idea工程下直接寻找文件的。一般用来找工程下的项目文件。都称为相对路径
java 复制代码
 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编码。

字符集的编码,解码操作

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

对字符的编码

对字符的解码

java 复制代码
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());

相关推荐
AirMan14 分钟前
Park 打断大反转!一次 park 不阻塞,参数化日志竟成幕后黑手?
java·后端
两仪式quq20 分钟前
Java—异常Exception
java·开发语言
玩代码23 分钟前
观察者设计模式
java·设计模式·观察者设计模式
m0_6203551937 分钟前
线程学习day1---基础知识+pthread_create、self、exit、cancle、join
java·开发语言
武子康1 小时前
Java-74 深入浅出 RPC Dubbo Admin可视化管理 安装使用 源码编译、Docker启动
java·分布式·后端·spring·docker·rpc·dubbo
Boop_wu1 小时前
【Java SE】抽象类
java·开发语言
lemon3106241 小时前
Linux Java环境配置
java·开发语言
Brookty2 小时前
Java线程创建与运行全解析
java·开发语言·后端·学习·java-ee·线程
野生程序员y2 小时前
spring容器的bean是单例还是多例的?线程安全吗?
java·后端·spring
星辰大海的精灵2 小时前
Java 线程池的工作原理及实践
java·后端·架构