java write os_java基础 之IO流随笔

java之IO流

FileWriter是一个字符输出流,作用是向文件中写入数据

1.导包

import java.io.FileWriter;

2.创建

类名 对象名 = new 类名(参数);

FileWriter(String fileName) 根据给定的文件名构造一个 FileWriter 对象。

fileName是一个文件路径,比如:E:\\data.txt

举例:

FileWriter fw = new FileWriter("E:\\data.txt");

注意,创建FileWriter对象完成的3个操作:

(1)根据路径,寻找文件,如果不存在,直接创建新的文件

(2)创建FileWriter对象

(3)将FileWtier对象和文件相关联

3.使用

成员方法

void write(String str) 将字符串str写入到文件对应的内存中

void flush() 刷新该流的缓冲,把内存缓冲区中的数据刷新到文件中。

void close() 关闭此流,但要先刷新它

4.使用FileWriter的步骤

(1)创建FileWriter对象,并和文件相关联

(2)调用write方法,向文件中写入数据

(3)执行flush操作

(4)关闭流,释放资源,close方法

5.注意,过程:

Java程序--->JVM--->OS(操作系统)--->硬盘

路径问题

1.绝对路径:指的是从盘符根路径开始,一直写到文件名,中间的每个具体的路径都要有

2.相对路径:指的是相对于项目的根路径,直接写文件名即可

关闭和刷新方法的区别

1.flush:是将文件内存中的数据,刷新到文件中,调用flush方法后,可以继续向文件中写入数据

2.close:执行close方法后,不能继续写入数据,否则报错:Stream closed

执行close方法,该方法内部会先执行flush,将数据写入到文件,再关闭流

写数据的5个方法

1.void write(String str):写一个字符串数据

2.void write(String str,int index,int len):写一个字符串中的一部分数据, index:开始索引,len:写几个

3.void write(int ch):写一个字符数据,这里写int类型的好处是既可以写char类型的数据,也可以写char对应的int类型的值。'a',97

4.void write(char[] chs):写一个字符数组数据

5.void write(char[] chs,int index,int len):写一个字符数组的一部分数据, index:开始索引,len:写几个

换行写入

换行也是一个字符,不同的操作系统中,有所不同

1.在window中,换行用:\r\n

2.Linux系统中,换行:\n

3.maxOS系统中,换行:\r

FileWriter追加写入

要实现追加写入,需要看FileWriter类的构造方法

1.FileWriter(String fileName, boolean append)

构造放中参数的作用:

第一个参数:写入文件的目的地

第二个参数:append作用

true:可以续写,在文件的末尾处继续追加写入

false:不能续写,覆盖之前的文件

2.FileWriter(String fileName) :没有写第二个参数,相当于第二个参数为false,表示的是覆盖写入(重新写入)

FileReader是一个字符输入流(文件字符输入流),作用是从文件中读取数据

1.导包

java.io.FileReader;

2.创建:

构造方法

FileReader(String fileName) 传递要读取的文件名称,文件名既可以是一个绝对路径,又可以是一个相对路径

举例:

FileReader fr = new FileReader("E:\\data.txt");

注意,创建FileReader对象,完成3件事:

(1)根据路径,寻找文件,如果不存在,直接报错

(2)创建一个FileReader对象

(3)将FileReader对象和文件相关联

3.使用

成员方法

int read() 读取单个字符并返回,如果返回值为-1,说明文件结束了,不用再读了

int read(char[] cbuf) 一次读取一个字符数组的数据,返回的是实际读取的字符个数

4.FileReader的使用步骤

(1)创建文件字符输入流FileReader对象fr,并和文件相关联

(2)调用read方法读取数据

(3)关闭流资源

5.注意,过程:

Java程序

读取字符数组

int read(char[] cbuf) 一次读取一个字符数组的数据,返回的是实际读取的字符个数

如果返回值为-1,说明文件结束了,不用再读取了

BufferedWriter也是一个字符输出流,用法和FileWriter差不多,但是比FileWriter提供了更为强大的功能

底层定义了一个长度为8192的字符数组,作为缓冲

1.创建:

(1).先创建一个普通的FileWriter对象

FileWriter fw = new FileWriter("E:\\data.txt");

(2).再将FileWriter对象包装成BufferedWriter对象

BufferedWriter bw = new BufferedWriter(fw);

2.使用:

通过构造方法,发现,BufferedWriter最终也是通过FileWriter来操作文件的,所以FileWriter具备的方法,

BufferedWriter都具有

3.注意:

(1)不建议调用flush方法,因为缓冲区满了后,会自动刷新

(2)只需要关闭BufferedWriter,不需要关闭FileWriter

写一个换行符

void newLine():写一个换行符,这个换行符由系统决定,写入一个自适应系统的换行符

BufferedReader也是一个字符输入流,用法和FileReader差不多,但是比FileReader提供了更为强大的功能

底层定义了一个长度为8192的字符数组,作为缓冲

1.创建:

(1).先创建一个普通的FileReader对象

FileReader fr = new FileReader("E:\\data.txt");

(2).再将FileReader对象包装成BufferedReader对象

BufferedReader br = new BufferedReader(fr);

2.使用:

通过构造方法,发现,BufferedReader最终也是通过FileReader来操作文件的,所以FileReader具备的方法,

BufferedReader都具有

3.注意:

(1)不建议调用flush方法,因为缓冲区满了后,会自动刷新

(2)只需要关闭BufferedReader,不需要关闭FileReader

使用BufferedReader一次读取一行内容

String readLine():一次读取一行数据,但是不读取换行符,如果读取结束,返回的是null

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值