IO流常规操作

 

IO流

IO就是输入输出,IO设备在计算机中起着举足轻重的作用,IO流也就是输入输出流,用来交互数据,程序和程序交互,程序也可以和网络等媒介交互。

一、IO流的分类

要分类,肯定得站得不同角度来看这个问题。

  • 根据流向划分,分为输入流和输出流
  • 根据数据的单位来分划,分为字节流和字符流
  • 根据功能划分,分为节点流和包装流
  • 还有很多

二、四大基本流

在java中IO流非常之多,但都继承于这四大基流,分别为,字节输入流(InputStream),字节输出流(OutputStream),字符输入流(Reader)和字符输出流(Writer).

它们都是抽象类,不能创建对象,只能创建它们的子类对象,阅读API发现,它们都有一个共同的方法close方法,用来关闭流,如果不关闭流的话程序会一直引用着文件。

三、模板操作

  • 创建源和目标
  • 创建流对象
  • 具体的IO操作
  • 关闭流

在下面的例子中穿插讲述

四、文件流

文件流操作是是文件。分为字符流和字节流,字节流操作是所有的二进制文件包括视频啊,图片啊什么的。字符流主要解决的还是中文的一些问题,因为中文多个字节(GBK是2个字节,UTF-8是3个字节),所有可能出现读一半或者写一半就不读了或者不写了,这样就出现乱码了。具体用字符流还是字节流得具体选择,字节流是可以操作字符流的,但是反过来就可能出现问题。输入就是从文件中读到程序中来,而输出就是从程序中输出到文件中。在这样章节记住一句话:读进来,写出去。下面操作一下各个流的常用方法,

  • 文件字节输入流(FileInputStream)

    int read()  从此输入流中读取一个数据字节。  int read(byte[] b) 从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中 int read(byte[] b, int off, int len)从此输入流中将最多 len 个字节的数据读入一个 byte 数组中

    读取文件中所有的数据,用到了一个缓冲数组,也就是每次读取5个字节,直到读完为止有个len返回当前读了几个字节,如果后面没有字节了,那么它就返回-1

    //读取文件中所有的数据 byte[] buffer = new byte[5];//定义一个缓冲数组长度为5,每次只能读取5个字节 int len = 0;//当前读取的字节数,没有字节就返回 -1 while((len = in.read(buffer))!= -1 ){     String str = new String(buffer,0,len);     System.out.println(str); }
  • 文件字节输出流(FileOutputStream)

    1.void write(byte[] b)  将 b.length 个字节从指定 byte 数组写入此文件输出流中。  2.void write(byte[] b, int off, int len) 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。  3.void write(int b)  将指定字节写入此文件输出流。 

    输出就是想文件中写数据,可以一次写一个字节,也可以写一个数组中的元素,这个比较简单。可以用一下四个步骤操作一下

     public class FileOutputStreamDemo {   public static
    
                        
                    
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信