java基础--IO(输入输出流)

IO概述:

输入输出都是从程序的角度来说的

输入流:数据流向程序

输出流:数据从程序流出

 

字节流:一切文件数据都是字节

 

字节输出流【OutputStream】:

  此抽象类表示所有输出字节流的所有类的超类(父类)

  定义了子类的公用成员方法:

 

    

字节输出流的使用步骤:

  1.创建一个FileOutputStream对象,构造方法中传递写入数据的目的地

  2.调用filrOutputStream中的write()方法,把数据写入到文件中

  3.释放资源

public class FileOutputStreamTest {
    public static void main(String[] args) throws IOException {
        FileOutputStream fo=new FileOutputStream("E:\\a.txt");
       fo.write(50);
       fo.close();
    }

 

一次写多个字节的方法:

  write(byte[] b)     将b.length字节从指定字节数组写入此输出流

  write(byte[] b, int off,int len)off是开始索引  len是写几个字节  从指定字节数组输入  len字节,从偏移量off 开始输入此输出流

public static void main(String[] args) throws IOException {
        FileOutputStream fo=new FileOutputStream("E:\\a.txt");
        byte[] bytes={65,66,67,68,69};//ABCDE
       // byte[] bytes={-65,-66,-67,68,69};//烤紻E
       fo.write(bytes);
       fo.write(bytes, 1, 2);//ABCDEBC

        //字符串转数组的方法
        byte[] bytes1 = "你好".getBytes();
        System.out.println(Arrays.toString(bytes1));//[-28, -67, -96, -27, -91, -67]
        fo.write(bytes1);//ABCDEBC你好
        fo.close();
    }

 

 字节输入流FileInputStream

  使用步骤:

    1.创建FileInputStream对象,绑定要读取的数据源

    2.使用对象中的read()方法

    3.释放资源

建一个a.txt文件内容为abc,创建一个类,读取信息

package com.zhs.io;

import java.io.FileInputStream;
import java.io.IOException;

public class FileInputDemo {
    public static void main(String[] args) throws IOException {
        FileInputStream fio=new FileInputStream("E:\\JavaBase\\FirstPro\\src\\a.txt");
    //    int len = fio.read();
  //      System.out.println(len);//97
//        int len1 = fio.read();
//        System.out.println(len1);//98
//        int len2 = fio.read();
//        System.out.println(len2);//99
        int len=0;
        while ((len=fio.read())!=-1){
            System.out.println((char) len);//char()将读取的信息转成字符
        }
        fio.close();
    }
}

一次读取单个字节与多个字节的图解

 

 循环实现一次读取多个字符:

package com.zhs.io;

import java.io.FileInputStream;
import java.io.IOException;

public class FileInputDemo {
    public static void main(String[] args) throws IOException {
        FileInputStream fio=new FileInputStream("E:\\JavaBase\\FirstPro\\src\\a.txt");
        byte[] bytes=new byte[1024];
        int len=0;
        while ((len=fio.read(bytes))!=-1){
            //String(bytes,0,len)读取有效长度的字符
            System.out.println(new String(bytes,0,len));
        }
        fio.close();
    }
}

 

 文件复制:

 

 文件复制:

  读取一个字节,写入一个字节方式:

//创建字节输入流对象,绑定要读取的数据源
        FileInputStream fis=new FileInputStream("E:\\JavaBase\\FirstPro\\src\\a.txt");
        //创建字节输出流对象,绑定要写入的数据目的地
        FileOutputStream fio=new FileOutputStream("D:\\a.txt");
        int len=0;
        //使用字节输入流对象的read()方法进行读取
        while ((len=fis.read())!=-1){
            //使用字节输出流对象的write()方法进行写入
            fio.write(len);
        }
        //释放资源,(先关闭写的后关闭读的,写完肯定已经读完了)
        fio.close();
        fis.close();

  使用数组缓冲,一次读取写入多个字节(推荐使用)

//创建字节输入流对象,绑定要读取的数据源
        FileInputStream fis=new FileInputStream("E:\\JavaBase\\FirstPro\\src\\a.txt");
        //创建字节输出流对象,绑定要写入的数据目的地
        FileOutputStream fio=new FileOutputStream("D:\\a.txt");
        int len=0;
        //使用字节输入流对象的read()方法进行读取
//        //一次读取一个,写入一个字节方式
//        while ((len=fis.read())!=-1){
//            //使用字节输出流对象的write()方法进行写入
//            fio.write(len);
//        }
        //数组缓冲读取多个字节,写入多个字节方式
        byte[] bytes=new byte[1024];
        while ((len=fis.read(bytes))!=-1){
            //从0开始,读取有效长度的字节
            fio.write(bytes,0,len);
        }
        //释放资源,(先关闭写的后关闭读的,写完肯定已经读完了)
        fio.close();
        fis.close();

 

 

 

posted @ 2020-10-29 11:09  lemmon_water  阅读(168)  评论(0)    收藏  举报