黑马程序员——IO流

来源:互联网 发布:天子星软件 编辑:程序博客网 时间:2024/06/03 19:31

------- android培训、java培训、期待与您交流! ----------


概念

1.IO流用来处理设备之间的数据传输
2.JAVA对数据的操作是通过流的方式
3.JAVA用于操作流的类都在IO包中
4.流按流向分为两种:输入流,输出流
5.流按操作类型分为两种:
    字节流:字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的
     字符流:字符流只能操作纯字符数据,比较方便


read()方法读取的是字节,返回的是int,而不是byte的原因
 因为字节输入流可以操作任意类型的文件,比如图片音频等,这些文件底层都是以二进制形式存储的,如果每次读取都返回byte,有可能在读到中间的时候遇到111111111,那么这111111111是byte类型的-1,我们的程序是遇到-1就会停止不读了,后面的数据就读不到了,所以在读取的时候用int类型接收,如果111111111会在前面补上24个0凑足4个字节,那么byte类型的-1就变成int类型的255了这样可以保证整个数据读完,而结束标记的-1就是int类型

字节流读取与写入

import java.io.*;class Demo {public static void main(String[] args) {FileInputStream fis = new FileInputStream("1.txt");FileOutputStream fos = new FileOutputStream("copy.txt");byte[] b = new byte[8192];int len;while((len = fis.read(b)) != -1) {fos.write(b, 0, len);}fis.close();fos.close();} }

字符流读取与写入

import java.io.*;class Demo {public static void main(String[] args) {FileReader fr = new FileReader("1.txt");FileWriter fw = new FileWriter("copy.txt");char[] b = new char[8192];int len;while((len = fr.read(b)) != -1) {fos.write(b, 0, len);}fr.close();fw.close();} }

使用BufferedReader()和BufferedWriter与FileReader、FileWriterr的区别

     1.相同点:都可实现对文件的读写操作
     2.使用缓冲区的话:读取字符时会一次读取若干字符到缓冲区, 然后逐个返回给程序, 降低读取文件的次数, 提高效率,写入时会先写入到缓冲区,直到缓冲区写满才会写入到文件中
     3.使用时,Buffered拷贝写入时,只需写入读取的读取的int类型数,而使用file写入时,则需要将int类型转换成char类型再进行写入




0 0
原创粉丝点击