IO流

IO流

IO流基类

(1)概述:

IO流用来处理设备之间的数据传输

(2)分类:

1.按照数据流向,站在内存角度

​ 输入流 读入数据
​ 输出流 写出数据

2.按照数据类型

​ 字节流 可以读写任何类型的文件 比如音频 视频 文本文件
​ 字符流 只能读写文本文件

什么情况下使用哪种流呢?
如果数据所在的文件通过windows自带的记事本打开并能读懂里面的内容,就用字符流。其他用字节流。
如果你什么都不知道,就用字节流

(3)基类

a:字节流的抽象基类:
InputStream ,OutputStream。
b:字符流的抽象基类:
Reader , Writer。
注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
如:InputStream的子类FileInputStream。
如:Reader的子类FileReader。

(4)创建输入输出流

FileOutputStream(File file)
创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
FileOutputStream(String name)
创建一个向具有指定名称的文件中写入数据的输出文件流。
        //文件输入流
        //输入流所关联的文件,如果不存在,就会报错
        File file = new File("e.txt");

        //FileInputStream(File file)
        //通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。
        FileInputStream in = new FileInputStream(file);
        //FileInputStream(String name)
        //通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。
        
        FileInputStream in2 = new FileInputStream("e.txt");

(5)举例

public class MyTest3 {
    public static void main(String[] args) throws IOException {
        FileInputStream in = new FileInputStream("e.txt");
        //创建一个字节数组,充当缓冲区
        byte[] bytes = new byte[1024];
        int len = in.read(bytes);//一次读取1024个字节,放到这个缓冲区里面
        System.out.println(len); //这个len他实际读取到的长度
       

        String s = new String(bytes,0,len);
        System.out.println(s);

        in.close();
    }
}

(6)使用文件输入输出流进行文件的复制

public class CopyFile {
    public static void main(String[] args) throws IOException {
        //我们可以使用文件输入输出流,进行文件的复制
        //方式:读取一个字节,写入一个字节来复制
        FileInputStream in = new FileInputStream("MyTest.java");
        FileOutputStream out = new FileOutputStream("E:\\MyTest.java");
        //循环的读写
        //定义一个变量
        int len=0; //表示读取到的字节
        while ((len=in.read())!=-1){
            out.write(len);
            out.flush();//刷新,可以不做,但建议做
        }
        //释放资源
        in.close();
        out.close();

    }
}

注意:每读取一个字节,指针向后移动一位,所以把in.read赋值给len

public class fuzhi {
    public static void main(String[] args) throws IOException {
        FileInputStream in = new FileInputStream("C:\\Users\\acer\\Pictures\\1.jpg");
        FileOutputStream out = new FileOutputStream("D:\\图片.jpg");
        byte[] bytes = new byte[1024 * 1024];
        int len=0;
        while((len=in.read(bytes))!=-1){
            out.write(bytes,0,len);
            out.flush();
        }
        in.close();
        out.close();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值