FileInputStream和FileOutputStream

FileInputstream 字节输入流

用于文件内容的读取操作.

创建FileInputstream对象用于读取文件内容,使用后需要进行关闭操作

常用方法:

read(); //每次仅读取一个字节,返回值为-1时说明读取到文件尾

read(byte[] buff); //每次读取指定个数字节的内容,返回值为读取字节的个数,-1时读取到文件尾

close(); //关闭文件流


package com.cn.file;
import org.junit.Test;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class FileInputS {
    @Test
    public void fIleInput01(){
        FileInputStream inputStream =null;
                String filePath="F:\\y\\file02.txt";
                int t=0;
        try {
             inputStream = new FileInputStream(filePath);
             while((t=inputStream.read())!=-1){ //每次仅读取一个字节,中文会乱码,到-1时说明文
                                                // 件到达结尾
                 System.out.print((char)t);
             }

        }  catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                inputStream.close(); //关闭输入流
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }


    @Test
    public void fIleInput02(){
        FileInputStream inputStream =null;
        String filePath="F:\\y\\file02.txt";
        byte[] t=new byte[5];
        int num=0;
        try {
            inputStream = new FileInputStream(filePath);
            while((num=inputStream.read(t))!=-1)
            {   //每次读取指定的字节个数,到-1时说明文件到达结尾,read()方法的返回值为读取的个数,也
                // 就是更新到数组中的个数,当文件还远大于数组个数时为数组的大小,当小于数组个数时,为
                //小于数组长度的一个数,但不为-1.等下次则为-1.
                
                System.out.print(new String(t,0,num));
                //new String(t,0,num);参数分别为数组,数组起始位置,读取数组的个数,然后将数组
                // 中的值作为字符转化为字符串
            }

        }  catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                inputStream.close(); //关闭输入流
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }


}


运行结果:

FileOutputStream 文件输出流

文件输出流,用于文件内容的写入操作

构造方法:

FileOutputStream(String filePath); //参数为文件路径,原来文件中的内容被清空,重新写入

FileOutputStream(String filePath , Boolean append); //参数为文件路径,append为true时以追加的方式写入内容,原来文件中的内容依旧存在,新写入的内容追加在原来的内容之后

常用方法:

write(int a); //写入单个字符

write(byte[] buff); //写入整个数组内容

write(byte[] buff,int offset,int length);//写入数组指定位置的内容

close(); // 关闭文件流


package com.cn.file;
import org.junit.Test;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

public class FileOutputS {

    @Test
    public void FileOutput(){
        String filePath1="F:\\y\\file01.txt";
        String filePath2="F:\\y\\file02.txt";
        FileOutputStream fileOutputStream01=null;
        FileOutputStream fileOutputStream02=null;
        try {
            fileOutputStream01=new FileOutputStream(filePath1);
            //已覆盖的方式写入

            fileOutputStream02=new FileOutputStream(filePath2,true);
            //已追加到结尾的方式写入

            fileOutputStream01.write('a'); //写入单个字符或数字,将文件之前存的内容覆盖

            String str="Hello";
            fileOutputStream01.write(str.getBytes());
            //写入整个数组内容,不会覆盖上面写入的a,因为这是一次打开
            //str.getBytes()方法用于将字符串转化为字符数组

            fileOutputStream01.write(str.getBytes(StandardCharsets.UTF_8),0,3);
            //写入数组的指定位置指定个数内容

            fileOutputStream02.write('a');//写入单个字符a,之前的文件内容依旧保留
            fileOutputStream02.write(str.getBytes());//写入Hello
            fileOutputStream02.write(str.getBytes(),0,3);//写入Hel



        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                fileOutputStream01.close();
                fileOutputStream02.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }

    }
}


运行结果:

posted @ 2023-02-04 11:16  赤叶秋枫  阅读(31)  评论(0编辑  收藏  举报