Day_05 Java IO流

一、 IO流

  • IO 流可以把数据存储到文本,也可以从文件中读取数据。
  • 常见应用:文件复制(U盘的拷贝)、上传文件(微信、QQ的上传照片等)、下载文件(微信、QQ的图片下载,迅雷文件的下载等)。
  • 分类:分类是站在程序的角度出发的。
    1. 输入流:一般是使用文件输入流 FileReader类
    2. 输出流:一般是使用文件输入流 FileWriter类

1. 文件输入流 FileReader类

  • 构造函数 new FileReader(String Filename); 需要抛异常(防止文件不存在)。
  • 使用步骤

A:创建输入流对象
B:调用读取方法
int read(); // 一次只读取一个字符,返回的是ASIIC码值。为-1表示文件末尾
int read(char []chu);// 一次读取多个字符,返回的是实际读取长度。为-1表示文件末尾。数组长度推荐使用1024的整数倍,因为进制之间的转换就是1024的倍数
注意:不同的系统换行符不相同
Windows系统:\r\n两个字符组成
Linux系统:\n
mac系统:\r
C:释放资源

2. 文件输出流 FileWriter类

  • 构造方法 new FileWriter(String Filename,Boolean b);第二个参数表示写入的数据是否添加到文件尾部,默认为false。

  • 使用步骤

    1. 创建输出流对象 :
      A:如果目标文件不存在,调用系统资源创建一个同名文件。需要指定路径,没有指定默认是在调用程序的文件夹下生成。
      B:创建输出对象
      C:将输出对象指向该文件
      D:close()方法与flush()方法的区别:flush()方法刷新缓冲区,将缓冲区的字符压入输出流中,再由文件输出流将数据写入文件。close()方法先刷新缓冲区再释放资源。
    2. 调用写出数据的方法:
      A:论API的重要性。需要注意一个方法 write(int c)//其实质是写入一个字符,如 ‘a’ 也可以是 97
      B:为什么调用了write()方法并没有直接写入数据。:写入数据的基本单位是字节,而字符串等其他是多个字节。write() 方法一下子是不能写入多个字节的。因此数据没有直接写入文件而是写入了缓冲区中。需要调用 flush() 或者close() 刷新缓冲区
    3. 释放资源
      通知系统文件已经使用完毕,否则只能等程序结束才能删除文件。会提示此文件已被XXX打开。
  • 注意:只要创建字符输出流对象,并指向了文件。在最后释放资源的时候无论中间是否有调用读取或写出数据方法,close()都会将缓冲区里面的数据压入字符输出流中最后进入文件。

3. 字符缓冲流

  • BufferedWriter:缓冲输出流,将文本直接写入字符输出流,缓冲各个文本字符,从而提供单个字符、数组、和字符串的高效写出。
  • BufferedReader :缓冲输入流,从字符输入流中读取文本,缓冲各个字符,从而实现单个字符 、数组、字符串的高效读取。
  • 使用步骤:他们的使用步骤和输入/出流一样,就连调用的方法都是一样的。读取一个或多个字符,写出一个或多个字符。但是因为要高效一些所以使用缓冲输入/出流
  • 缓冲流的特殊功能:
    BufferedReader.readLine();从文件中都区一行数据,没有数据返回null。
    BufferedWriter.newLine();//写出一个换行符,会根据不一样的系统写入不一样的字符。

char a[]=new char[1024];
int len;
while ((len=bufferedReader.read(a))!=-1)// 读取多个字符
{
System.out.print(new String(a,0,len));//len 是返回实际读取长度
}
bufferedReader.close();
读数据:
一次读取一个字符 int read();
一次读取多个字符 int read(char []chu);返回实际读取长度 -1 表示结束
写数据:
一次写一个字符
一次写多个字符,字符数组的一部分或全部
一次写一个字符串,字符串的一部分或全部

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值