Java学习--Io框架的使用

I/O框架

一、流的概念

概念

内存与储存设备之间传输数据的通道

分类

按方向
  • 输入流:将<存储设备>中的内容读入到<内存>中
  • 输出流:将<内存>中的内容写入到<存储设备>中
按单位
  • 字节流:以字节为单位,可以读写所有数据
  • 字符流:以字符为单位,只能读写文本数据
按功能
  • 节点流:具有实际传输数据的读写功能
  • 过滤流:在节点流的基础之上增强功能

二、字节流

字节流的父类(抽象类)

InputStream

此抽象类是表示字节输入流的所有类的超类
在这里插入图片描述

OutputStream

此抽象类是表示输出字节流的所有类的超类

在这里插入图片描述

文件字节流
  • FileInputStream
    public int read(byte[] b) 从流中读取多个字节,将读到内容存入b数组,返回实际读到的字节数;如果达到文件的尾部,则返回-1
package demo1;

import java.io.File;
import java.io.FileInputStream;

public class FileLearn {
   
public static void main(String[]args)throws Exception{
   
        FileInputStream fileInputStream=new FileInputStream("d:\\aaa.txt");
            int data=0;
            byte[] bytes=new byte[3];
            int count=fileInputStream.read(bytes);
                System.out.println(count);
                System.out.println(new String(bytes));
            while((data=fileInputStream.read())!=-1){
   
                System.out.println((char)data);
            }
            fileInputStream.close();
        }
}

3
asd
a
s
d

  • FileOutputStream
    public void write(byte[] b) 一次写多个字节,将b数组中所有字节,写入输出流
public class OutPutLearn {
   
    public static void main(String[] args) throws Exception{
   
        FileOutputStream fileOutputStream=new FileOutputStream("D:\\aaae.txt",true);
        fileOutputStream.write(97);
        fileOutputStream.write('b');
        fileOutputStream.write('c');
        String str="helloworld";
        fileOutputStream.write(str.getBytes());
        fileOutputStream.close();
    }
}
文件复制
package demo1;

import java.io.FileInputStream;
import java.io.FileOutputStream;

public class Copy {
   
    public static void main(String[] args) throws Exception{
   
        FileInputStream fileInputStream=new FileInputStream("d:\\aaa.txt");
        FileOutputStream fileOutputStream=new FileOutputStream("d:\\sdsd.txt");
        byte[] buf=new byte[1024];
        int count=0;
        while((count=fileInputStream.read(buf))!=-1){
   
            fileOutputStream.write(buf,0,count);
        }
        fileInputStream.close();
        fileOutputStream.close();

    }


}

三、字节缓冲流

在这里插入图片描述

BufferedInputStream

为另一个输入流增添一些功能,即缓冲输入以及支持mark和reset方法的能力。
private static int DEFAULT_BUFFER_SIZE = 8192; 缓冲求大小
即内容小于8k会存与缓存区,可用flush()写入硬盘

package demo1;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class BufferedInput {
   
    public static void main(String[] args) throws Exception {
   
        FileOutputStream fileInputStream=new  FileOutputStream("D:\\aaa.txt");
        BufferedOutputStream bufferedOutputStream=new BufferedOutputStream(fileInputStream);
           for(int i=0;i<10;i++
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值