Java IO流 字节流 FileOutputStream

Java IO流 打印流 PrintStream PrintWriter
Java IO流 序列化流 ObjectOutputStream ObjectInputStream
Java IO流 缓冲流 BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter
Java IO流 字符流 目录拷贝
Java IO流 字符流 FileWriter
Java IO流 字符流 FileReader
Java IO流 字节流 FileInputStream
Java IO流 字节流 FileOutputStream

FileOutputStream 继承自抽象类OutputStream,用于实现从内存向文件中写入数据

创建对象

创建FileOutputStream 对象,相当于再内存与文件之间打开一个通道
构造方法有两种
note:
        如果文件名称不存在,会自动创建文件,但文件所在的路径必须存在
        每次执行构造方法之后,文件的内容都会清空

String filePath = "src/main/java/io_stream/a.txt";
// 传入文件路径
FileOutputStream fos = new FileOutputStream(filePath);
// 传入File类型
FileOutputStream fos = new FileOutputStream(new File(filePath));

文件写入

FileOutputStream 的写入方式有三种
    void write(int b)                                         一次写入一个字节数据
    void write(byte[] b)                                    一次写入一个字节数组数据
    void write(byte[] b, int off,int len)          一次写入一个字节数组部分数据
note:
    操作结束之后要调用close()方法关闭流

public class ByteStream {
    public static void main(String[] args) throws IOException {
        String filePath = "src/main/java/io_stream/a.txt";
        testFileOutputStream(filePath);
    }

    public static void testFileOutputStream(String filePath) throws IOException {

        FileOutputStream fos = new FileOutputStream(new File(filePath));
        byte[] bytes = {97, 98, 99, 100}; // [a, b, c, d]
        String name = "zdy";

        fos.write(97); // 写入一个字节ASCII形式 a
        fos.write(bytes); // 写入一个字节数组,abcd
        fos.write(name.getBytes()); // 写入一个字节数组,zdy
        fos.write(bytes, 0, 2); // 写入bytes中从索引0开始的连续两个数据,ab

        fos.close();
    }
}

写入换行

要实现换行就要向文件中写入换行符,不同的操作系统换行符不同
windows  ->  \r\n
Linux       ->  \n
Mac         ->  \r

public class ByteStream {
    public static void main(String[] args) throws IOException {
        String filePath = "src/main/java/io_stream/a.txt";
        testFileOutputStream(filePath);
    }
    
    public static void testFileOutputStream(String filePath) throws IOException {

        FileOutputStream fos = new FileOutputStream(new File(filePath));

        String info = "hello\r\nzdy";
        fos.write(info.getBytes()); 
        // 文件中内容 👇
        // hello
        // zdy

        fos.close();
    }
}

追加写入

在创建对象时,第一个参数为路径或对象,第二个参数就是续写开关,设置为true即可
设置之后如果写入之前文件中有数据,数据不会被清空

public class ByteStream {
    public static void main(String[] args) throws IOException {
        String filePath = "src/main/java/io_stream/a.txt";
        testFileOutputStream(filePath);
    }

    public static void testFileOutputStream(String filePath) throws IOException {

		// 打开续写开关
        FileOutputStream fos = new FileOutputStream(new File(filePath), true);

        String info = "zdy";
        fos.write(info.getBytes());
        // 文件写入之前内容为hello,写入之后内容为👇
        // hellozdy

        fos.close();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值