如何在Java中进行文件的读写,Java IO流是必备的知识。在本文章中就对文本编码问题,File类常用API,遍历目录,RandomAccessFile基本操作,字节流进行简要介绍.
1.编码问题
首先介绍三种编码
1.GBK编码:中文占用2个字节,英文占用1个字节
2.UTF-8编码:中文占3个字节,英文占用1个字节
3.UTF-16be编码:中文占2个字节,英文占用2个字节
java字符,在Java内部都是用两个字节表示的,使用的是UTF-16be编码.
在java编程中,将字符转换成字节序列用的是项目默认的编码gbk.
使用getBytes();方法实现字符转换为字符序列,通过设置参数选择编码的方式.如下图
图片.png
当你的字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码。
图片.png
图片.png
可见由于项目默认的编码gbk. bytes4为UTF-16be编码序列,所以会出现乱码.
2.File类常用的API
java.io.File类用于表示文件或目录,File类只用于文件或目录的信息、名称、大小等,不能用于文件内容的访问
1.f.exists() 查看文件(目录)是否存在
创建:
1, 目录(文件夹)的创建: f.mkdir( );
2, 文件的创建: f.createNewFile( );
删除 f.delete( );
判断:
判断是否是目录: f.isDirectory( );
判断是否是文件: f.isFile( );
获得文件名称: f.getName( );
获得上级路径: f.getParent( );
代码实现如下图:
图片.png
遍历目录
遍历目录使用File类的list();方法
file.list()返回文件(目录)名,list不包括子目录的文件
file.listFiles返回文件(目录)的抽象(对象)
遍历所有文件、目录,使用递归方式,如下图
图片.png
4.RandomAccessFile基本操作
RandomAccessFile java提供对文件内容的访问,既可以读文件,也可以写文件
RandomAccessFile支持随机访问文件,可以访问文件的任意位置
1.java文件模型
在硬盘上的文件是一个字节一个字节存储的,是数据的集合
2.打开文件
有两种模式“rw”(读写)“r”(只读)
RandomAccessFile raf = new RandomAccessFile(file,"rw")
文件指针,打开文件时指针在开头pointer = 0;
3.写方法
raf.write(int)--->只写一个字节(高8位),同时指针指向下一个位置,准备再次写入
4.读字节
int b = raf.read()--->读一个字节
5.文件读写完成以后一定要关闭
6.读文件,须把指针移到文件头部:raf.seek(0);
代码如下图
图片.png
4.字节流
I/O输入输出流主要分为两大类字节流与字符流.
字节流
InoutStream抽象了应用程序读取数据的方式
OutputSteram抽象了应用程序写出数据的方式
2.EOF = End 读到-1就读到结尾
3.输入流基本方法
int b = in.read();读取一个字节无符号填充到int低八位。-1是EOF
in.read(byte[] buf);读取数据填充到字节数组buf
in.read(byte[] buf,int start,int size);读取数据导字节数组buf,从buf的start位置开始存放size长度的数据
4.输出流基本方法
out.write(int b) 写出一个byte到流,b的低8位
out.write(byte[] buf) 将buf字节数组都写入到流
out.write(byte[] buf,int start,int size)
5.FileInputStream--->具体实现了在文件上读取数据
6.FileOutputStream 实现了向文件中写入byte的数据方法
把文件作为字节流操作
图片.png
读取文件中的字节放在字节数组中
图片.png
通过复制文件,练习写入文件操作
图片.png