IO流FileInputStream和FileOutputStream

IO流FileInputStream和FileOutputStream

1.概念
IO流用来处理设备之间的数据传输
Java对数据的操作是通过流的方式
Java用于操作流的类都在IO包中
2.流的分类
流按流向分为两种:输入流,输出流。
流按操作类型分为两种:
字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的
字符流 : 字符流只能操作纯字符数据,比较方便。
3.IO流常用父类

  • 字节流的抽象父类: 字节流可以读取任意文件图片音频等。
    InputStream(字节输入流)
    OutputStream(字节输出流)

  • 字符流的抽象父类:
    Reader(字符输入流)
    Writer(字符输出流)
    4.IO程序书写
    1.使用前,导入IO包中的类
    2.使用时,进行IO异常处理(因为Io流是操作键盘和内存之间的联系,将硬盘上的存放在内存中,但是硬盘上可能不存在东西,所以需要先用异常处理)
    3.使用后,释放资源(内存和硬盘之间建立了管道,数据进行流通使用之后需要关掉,释放资源)

  • read()一次读取一个字节

  • fis.close()关闭流释放资源

  • 常用的方法
    在这里插入图片描述
    案例:FileInputStream读取字节

import java.io.FileNotFoundException;
import java.io.IOException;

public class FileInputStream {

    public static void main(String[] args) throws IOException {
        //demo1 ( );
        java.io.FileInputStream fis = new java.io.FileInputStream("src\\main\\java\\sss.txt" );//sss.txt中写的是abcd
        //本类的类名和java自带的类名重复了,如果想引用java自带的,必须要写java的全限定名来限定,写java的全限定名来限定的意义是:与自己定义的类名重复了用包做区别
        int b;
        while ((b = fis.read ()) != -1){    //-1文件结束的标志
            System.out.println ( b );
        }
        fis.close ();
    }

    private static void demo1() throws IOException {  //ctrl+alt+m 提取方法出来
        java.io.FileInputStream fis = new java.io.FileInputStream ( "src\\main\\java\\sss.txt" );   //创建流对象
        fis.read ();
        int x = fis.read ();    //从硬盘上读取一个字节
        System.out.println ( x );
        int y = fis.read ();
        System.out.println ( y );
        int z = fis.read ();
        System.out.println ( z );
        int a = fis.read ();
        System.out.println ( a );
        fis.close ();
    }

}
结果
97
98
99
100

案例:FileOutputStream输出字节到另一个文件上

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Demo1_FileOutputStream {
    /**
     *  FileOutputStream在创建对象的时候是如果没有这个文件会帮我创建出来
     * 	 * 如果有这个文件就会先将文件清空
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        //demo2 ( );
        FileOutputStream fos = new FileOutputStream ( "src\\main\\java\\qqq.txt" , true );    //如果想接着后面续写就在第二个参数传true
        fos.write ( 97 );
        fos.write ( 98 );
        fos.write ( 99 );
        fos.close ( );
    }

    private static void demo2() throws IOException {
        FileOutputStream fos = new FileOutputStream ( "src\\main\\java\\qqq.txt" ); //创建字节输出流对象,如果没有就自动创建一个
        fos.write ( 97 );   //虽然写出的是一个int数,但是到文件上的是一个字节,会自动去除前三个8位
        fos.write ( 98 );
        fos.write ( 99 );
        fos.write ( 100 );
        fos.close ( );
    }
}
结果
abc




发布了55 篇原创文章 · 获赞 5 · 访问量 4163

猜你喜欢

转载自blog.csdn.net/qq_43654669/article/details/100978100