JavaIO流与字节输出流OutputStream

本文详细介绍了JavaIO流的基础概念,包括其分类(输入流、输出流和字节流/字符流),以及字节输出流(如FileOutputStream)的使用,包括创建、写入数据、注意事项和资源管理。通过实例演示了如何在Java中操作文件和避免常见错误。
摘要由CSDN通过智能技术生成

1 概述

1.1 什么是IO流

IO流是存储和读取数据的解决方案,用于读写文件中的数据(包括本地文件、网络等)
IO流的参照是程序或内存,即使程序在读,程序在写。

1.2 IO的分类

根据流的方向分为:输入流输出流

  • 输入流:把数据从文件等中读取到内存的流
  • 输出流:把数据从内存写入到文件等中的流
    根据操作文件的类型分为:字节流字符流
  • 字节流:能操作所有的文件类型
  • 字符流:只能操作纯文本文件

1.3 IO流的体系

![[Pasted image 20240326214713.png]]

他们都有不同的实现类。

2 字节流

2.1 字节输出流(OutputStream)

是表示字节输出流的所有类的超类,将指定的字节信息写出到目的地。它定义了字节输出流的基本共性功能方法。
![[Pasted image 20240326230022.png]]

2.2 FileOutputStream

FileOutputStream是字节输出流的一个简单的实现类。
![[Pasted image 20240326230436.png]]

观察它的构造函数,传入的参数有两种,一种是一个参数字符串或者File对象,传递字符串的时候也会将其转化为File对象,另一个参数可选,false是默认值,表示清空当前文件,true则表示不清空当前文件,而是在当前文件的基础上作出变化。
![[Pasted image 20240327111926.png]]

![[Pasted image 20240327112032.png]]

2.3 写数据的流程

  1. 创建字节输出流对象
  2. 写数据
  3. 释放资源
    我们在改路径下创建一个test.txt文件,手动输入一些内容:
    ![[Pasted image 20240327153154.png]]

然后执行下面程序:

package ioStream;

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

public class StreamDemo1 {
    public static void main(String[] args) throws IOException {
        // 1. 创建对象
        FileOutputStream fos = new FileOutputStream("E:\\javacode\\Acwing\\test.txt");
        // 2. 写入数据
        fos.write('a');
        // 3. 关闭资源
        fos.close();
    }
}

控制台没有报错,并且查看test.txt:
![[Pasted image 20240327113121.png]]

2.4 需要注意的细节

  • 创建对象
    • 我们会发现test.txt文件中原先的内容被我们写入的字符给覆盖掉了,其实本质上说是在创建字节输出流对象时对文件先进行了清空。我们可以重写给test.txt文件写入内容,然后把写入数据的代码删掉,并执行程序,程序执行成功之后我们打开test.txt,文件会发现文件是空白的。
    • 如果我们需要在接着原文件写入数据,也即在原文件内容之后开始写输入而不是覆盖,那么我们创建对象时就需要额外传递一个参数true(默认值是false),然后写入数据就会发现是append。
  • 写入数据
    • 写入数据的write方法,它有不同的重载,例如:![[Pasted image 20240327154003.png]]
    • 值得注意的时,我们写入的是一个字符,假设我们我们需要写入9,那么传递的参数就应该是'9'或者9的ascii码57
    • 我们需要换行时。换行也是一个字符\r\n,因此我们在需要换行时写入改字符即可。
  • 关闭资源
    • 我们在完成操作之后,我们一定要关闭资源。否则假设我的程序对文件的写操作已经完成,但还在执行其他方法,此时我们对文件进行操作就会出现异常。就好像我们在平常尝试去删除一个已经打开的文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值