Java file i/o 笔记

一、使用File类操作文件
1、什么是文件?
文件可认为是 相关记录放在一起的数据的集合。
2、文件一般储存在哪里?
储存在磁盘、光驱、移动硬盘等。
3、java程序如何访问文件属性?
Java API :java.io.File 类

使用.File 类,访问文件的属性

注意:
A:一个“\”代表根目录,因为“\”有特殊意义,所以前面需要再加上一个“\”,代表转义字符。
B:将需要操作的文件 路径传给该对象,对象就可以通过一系列方法,对这个文件进行操作了。

二、File 类常用方法

注意:
A:相对路径名——相对于当前代码的路径。
B:绝对路径名——表示 完整路径
C:目录指的就是文件夹

二、字节流与字符流概述
1、 字符流的由来
因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。

2、字节流和字符流的 区别
A: 读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
B: 处理对象不同
字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。

3、结论
只要是处理 纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。


第三节:字节流读写文件
1、InputStream/OutputStream,都是抽象的读/写数据方式
2、EOF=End 读到结尾时是-1

3、FileInputStream (输入流的基本方法)
概述:该流用于从文件读取数据,可以使用 字符串类型的文件名创建一个输入流对象来读取文件
A:代码:InputStream is = new FileInputStream("res/data.xml");
B:创建了InputStream对象,就可以使用下面的方法来读取流或者进行其他的流操作。
C:读取的方式
//创建文件读入对象,传一个文件对象进去
//InputStream是一个抽象类
InputStream is = new FileInputStream(file);
// //调用读的方法,返回的是一个字节,再转换成字符
// System.out.println((char)is.read());
int leng = is.read();
//如果字节读取完,则返回-1
while (leng != -1) {
System.out.println((char)leng);
leng = is.read();//再读取下一个字节

4、FileOutputStream( 输出流基本方法
A、概述:该类用来创建一个文件并向文件中 写数据。如果该流在打开文件进行输出前, 目标文件不存在,那么该流会创建该文件。
B、代码:OutputStream os = new FileOutputStream("res/data.xml",true)
第一个参数是文件对象, 第二个参数是是 追加还是覆盖,传入布尔值,“真”是追加
C、创建OutputStream 对象完成后,就可以使用下面的方法来写入流或者进行其他的流操作。
//第一个参数是字节数组,第二个参数是数组的下标,第三个参数是长度
os.write(arr, 0, arr.length);

5、缓冲流
BufferedInputStream(InputStream in)和BufferedOutputStream(OutputStream out)
6、二进制文件的读写
DataInputStream( InputStream in)和DataOutputStream( OutputStream out)
常用方法:writeInt()/writeDouble()/writeUTF()/read()/readUTF()/readChar等等
作用:可以读写图片、音乐、视频等。
——
——
第四章:字符流读取文本文件
1、输入流
new FileReader(File filename):创建字符输入流对象
new FileReader(String filename):创建字符输入流对象
read():读取下一个字符
方法1:
//创建一个字符输入流对象
Reader r = new FileReader("D:/a.txt");
//创建一个字符串对象
StringBuffer sb =new StringBuffer();
char[] ch = new char[4];
//没必要用循环
int leng = r.read(ch);
while (leng != -1) {
//使用字符串添加方法
sb.append(ch);
leng = r.read();
}
System.out.println(sb);
方法2:
//创建一个字符输入流对象
Reader r = new FileReader("D:/a.txt");
//定义一个字符数组
char[] ch = new char[4];
System.out.println(r.read(ch));//返回的是真实的字符个数
//传一个字符类型的数组,在读取文件里信息后,会将字符存入该数组中。
//相当于,发生了一个引用传递,改变了传过去的数组
r.read(ch);
for (char c : ch) {
System.out.println(c);
}

2、输出流
FileWriter (File filename),FileWriter (String filename):创建输出对象
FileWriter (File filename,boolean append):是追加还是覆盖
字符输入流和输出流的read和 write· 作用:提升效率方法 使用字符数组读写数据,即以字符为基本单位处理数据
代码:
Writer w = new FileWriter("D:/a.txt");
w.write("中华人民共和国感谢法");
w.flush();//刷新缓存的方法

3、缓冲流
BufferedReader( Reader in)和BufferedWriter (Writer out)
BufferedReader--->readLine()一次读一行
BufferedWriter--->newLine()插入换行符
输入流代码:
Reader r = new FileReader("D:/a.txt");
BufferedReader br = new BufferedReader(r);
String l = br.readLine();
while (l != null) {
System.out.println(l);
l = br.readLine();
}

4、总结
1、后产生的流,要先关。
2、关闭放在finally块中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值