JAVAIO

目录

IO流

File

IO流的分类

 FileOutputStream

书写步骤

注意事项 

FileOutputStream写数据的三种方法

FileInputStream

书写步骤

 注意事项

FileInputStream循环读取

 FileInputStream一次读多个字节

FileReader

书写步骤 

注意事项

FileWriter

书写步骤

构造方法

 成员方法

 注意事项

总结


IO流

IO流即存储和读取数据的解决方案。

File

File表示系统中的文件或者文件夹的路径。利用File我们可以获取文件信息,判断文件的类型,创建文件或文件夹,删除文件或文件夹等等。但是File类只能对文件本身进行操作,不能读写文件里存储的数据。读写数据就需要IO流。

IO流的分类

按照流的方向分类分为输入流(读取)和输出流(写出)。

按照操作文件类型分类分为字节流(可操作所有类型的文件)和字符流(只能操作纯文本文件)。

78f432ef55cd43e78349609d95638b94.png

 FileOutputStream

操作本地文件的字节输出流,可以把程序中的数据写到本地文件中。

书写步骤

  1. 创建字节输出流对象
  2. 写数据
  3. 释放资源

38c0b75c6e9a4645be946ea42ffd1d3e.png

注意事项 

  1. 创建字节输出流对象时参数是字符串表示的路径或者File对象。如果文件不存在会创建一个新的文件,但是要保证父级路径存在;如果文件已经存在,则会清空文件。
  2. 写数据时write方法的参数是整数,但是实际上写到本地文件中的是整数ASCII上对应的字符。
  3. 每次使用完流之后都要释放资源。

FileOutputStream写数据的三种方法

e6368fdd233545f59b7f6cdfb93cfb75.png

  •  一次写一个字节数据

32754091fa274093a1d6a8392493f569.png

  •  一次写一个字节数组数据

d95847e63db241ecb0c6837e431504e6.png

  • 一次写一个字节数组的部分数据

b093a02cd38946a1a112c741faf44f27.png

 off代表起始索引,len代表个数

FileInputStream

操作本地文件的字节输入流,可以把本地文件中的数据读取到程序中来。

书写步骤

  1. 创建字节输入流对象
  2. 读数据
  3. 释放资源

1cfdbabc91ab43b7acbae534702ea69a.png

read:表示读取数据,每读取一个数据就移动一次指针。 

 注意事项

  1. 创建字节输入流对象时如果文件不存在,就直接报错。
  2. 读取数据时一次读一个字节,读出来的是数据在ASCII上对应的数字。读到文件末尾时,read方法返回-1.
  3. 每次使用完流必须要释放资源。

FileInputStream循环读取

fb98ee11b6084de6a95cf030e58c8fe3.png

 FileInputStream一次读多个字节

96982d695f2343ae9213d6dc2cc2f567.png

 一次读一个字节数组的数据,每次读取会尽可能把数组装满。创建的数组长度一般为1024的整数倍。

  • 一次读一个字节数组数据

735cab966c37450d8eaecd74a19a17c6.png

FileReader

操作本地文件的字符输入流。

书写步骤 

         1.创建字符输入流对象

438bf3612239438aa35faf8d60cd3204.png

         2.读取数据

7f0300a82cca4acba38253eaac54992a.png

         3.释放资源(关流)


  • 空参的read方法

ef3b120bdf9743b88aaf91c7bfb68cc4.png

  •  有参的read方法

610d8f0c2d7a424ca2aafdc367389d30.png

注意事项

  1. 创建字符输入流对象时,如果文件不存在,就直接报错。
  2. 读取数据时按字节进行读取,遇到中文一次读多个字节,读取后解码,返回一个整数。读到文件末尾,read方法返回-1。

FileWriter

操作本地文件的字符输出流。

书写步骤

  1. 创建字符流输出对象
  2. 写数据
  3. 释放资源

构造方法

8c7528714eaf41d680b0235167c74687.png

 成员方法

337d5fee19d047c0aad35f3e4342e8bc.png

  • 写出一个字符

5a4237d07c8e4c6fa6e6fec466c706c3.png

  •  写出一个字符串

09ffae800d854f049e01b0923af99302.png

  •  写出一个字符数组(有续写开关)

b095484a4e7948eab40ecdcdde4d9a64.png

 注意事项

  1. 创建字符输出流对象时,参数是字符串表示的路径或者File对象都是可以的。如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的;如果文件已经存在,则会清空文件,如果不想清空可以打开续写开关。
  2. 写数据时如果write方法的参数是整数,但是实际上写到本地文件中的是整数在字符集上对应的字符。
  3. 每次使用完流之后要释放资源。

总结

通过学长的讲解,我补充了一些知识点

1.IO流可形象地理解为一根管,是程序与数据源之间沟通的桥梁。

2.节点流和处理流的区别(结合学长讲解和上网查询):节点流为单独的一根管,是低级流,直接和数据源相接。处理流,也可叫包装流,用于包装节点流,可理解为管套着管,组合使用,可消除不同节点流的实现差异,不直接与数据源相连。

3.缓冲流可使程序变得更加高效,可以对基本的字节字符流进行增强,达到提高数据的读写能力。按照数据类型分类可分为字节缓冲流和字符缓冲流。

  • 字节缓冲流:BufferedInputStream,BufferedOutputStream
  • 字符缓冲流:BufferedReader,BufferedWriter

小结:虽然每次都预习,但是听的时候还是云里雾里的感觉o(TヘTo),但是还是会继续努力。关于学姐提出的截图问题,我也进行了自查,表格的截图是网课中的截图,这点之后会改为自己做表格;代码的截图是我自己在idea中敲完代码进行的截图,这点之后会改为在csdn中加入代码段,减少截图的出现。总之就是努力努力努力吧!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值