JAVA IO流

1、概念

流:是一抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流。更具体一点,是内存与存储设备之间传输数据的通道。

IO流:对于数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input 和输出output ,即流向内存是输入流,流出内存的输出流。

Java中I/O操作主要是指使用java.io包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。

按代为分

  • 字节流: 以字节为单位, 可以读写所有数据.
  • 字符流: 以字符为单位, 只能读写文本数据.
  • 按功能分

  • 节点流: 具有实际传输数据的读写功能.
  • 过滤流: 在街电流的基础之上增强功能.
  • FileInputStream和FileOutputStream,节点流,用于从文件中读取或往文件中写入字节流。如果在构造FileOutputStream时,文件已经存在,则覆盖这个文件
  • IO流的作用

    用来处理设备间数据传输问题

    常见的应用:文件复制、文件上传、文件下载

IO流的使用场景

     如果操作的是纯文本文件,优先使用字符流

     如果操作的是二进制文件,优先使用字节流

     如果不确定,则优先使用字节流

InputStream:字节输入流

OutputStream:字节输出流

2、字节流写数据

(1)基本步骤

      创建FileOutputStream对象,关联到一个文件路径

      调用write()方法,写出数据

      调用close()方法,释放资源

      打开文件,查看内容

(2)三种方式
      write(int b)                一次写一个字节数据

      write(byte[] arr)                 一次写一个字节数组

      write(byte[] arr,int index,int len)     写字节数组的一部分

如何文件续写

     使用FileOutputStream(String name,boolean append)构造方法

     构造方法中第二个参数传递true,则在文件末尾继续写数据 

构造方法

| BufferedOutputStream(OutputStream out) | 创建字节缓冲输出流对象 |

| BufferedInputStream(InputStream in)    | 创建字节缓冲输入流对象 |

 代码演示


public class BufferStreamDemo {
    public static void main(String[] args) throws IOException {
        //字节缓冲输出流:BufferedOutputStream(OutputStream out)
 
        BufferedOutputStream bos = new BufferedOutputStream(new 				                                       FileOutputStream("myByteStream\\bos.txt"));
        //写数据
        bos.write("hello\r\n".getBytes());
        bos.write("world\r\n".getBytes());
        //释放资源
        bos.close();
    
 
        //字节缓冲输入流:BufferedInputStream(InputStream in)
        BufferedInputStream bis = new BufferedInputStream(new                                                          FileInputStream("myByteStream\\bos.txt"));
 
        //一次读取一个字节数据
//        int by;
//        while ((by=bis.read())!=-1) {
//            System.out.print((char)by);
//        }
 
        //一次读取一个字节数组数据
        byte[] bys = new byte[1024];
        int len;
        while ((len=bis.read(bys))!=-1) {
            System.out.print(new String(bys,0,len));
        }
 
        //释放资源
        bis.close();
    }
}

字符流

1、概念

由于字节流操作中文不是特别的方便,所以Java就提供字符流

字符流 = 字节流 + 编码表

字符输入流(Reader)

字符输出流(Writer)

 3、字符缓冲流

(1)概念

BufferedWriter

 将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入,可以指定缓冲区大小,或者可以接受默认大小。默认值足够大,可用于大多数用途。

BufferedReader

从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取,可以指定缓冲区大小,或者可以使用默认大小。 默认值足够大,可用于大多数用途。 

(2)构造方法 

| BufferedWriter(Writer out) | 创建字符缓冲输出流对象 |

| BufferedReader(Reader in)  | 创建字符缓冲输入流对象 |

 代码演示


public class BufferedStreamDemo01 {
    public static void main(String[] args) throws IOException {
        //BufferedWriter(Writer out)
        BufferedWriter bw = new BufferedWriter(new                                                            FileWriter("myCharStream\\bw.txt"));
        bw.write("hello\r\n");
        bw.write("world\r\n");
        bw.close();
 
        //BufferedReader(Reader in)
        BufferedReader br = new BufferedReader(new                                                           FileReader("myCharStream\\bw.txt"));
 
        //一次读取一个字符数据
//        int ch;
//        while ((ch=br.read())!=-1) {
//            System.out.print((char)ch);
//        }
 
        //一次读取一个字符数组数据
        char[] chs = new char[1024];
        int len;
        while ((len=br.read(chs))!=-1) {
            System.out.print(new String(chs,0,len));
        }
 
        br.close();
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值