5-5 IO流的引入,本质,分类,三要素。字节输出流....

本文介绍了Java中的IO流,包括IO流的引入、本质和分类。详细讲解了字节流与字符流的区别,以及输入流和输出流的用途。文章还重点阐述了字节输出流的使用,包括常用方法如close(), flush(), write()等,并通过实例展示了文件字节输出流的构造和操作。此外,提到了不同操作系统中换行符的差异以及处理不当可能导致的异常情况。" 111846856,10296657,Python编程技巧:二维列表去重与操作汇总,"['Python', '数据处理', '编程技巧', '数据结构', '算法']
摘要由CSDN通过智能技术生成

IO流的引入,本质,分类,三要素

IO流的分类
按照数据类型分类

  1. 字节流:一般针对二进制文件【视频,音频,图片】
  2. 字符流:一般针对文本文件【xml,json,html,txt,md…】

按照流向分

  1. 输入流:从外界到内存
  2. 输出流:从内存到外界

综合分类

  • 字节流
    字节输入流 XXXInputStream
    字节输出流 XXXOutputStream
  • 字符流
    字符输入流 XXXReader
    字符输出流 XXXWriter

流的操作三要素:(*******************)

  1. 数据源:数据需要从哪里到内存?
  2. 目的地:数据从内存到哪里去?
  3. 交通工具:
    a.弄明白到底需要输入流还是输出流,也有可能两个都需要
    b.根据确定的流向在IO流框架中选取自己认为最适合的流

例子:(需求:向文本里写入“HelloWorld”)

public class ByteIODemo01 {
	public static void main(Sting[] args) {
	   /*
	   *	数据源:内存中的HelloWorld
	   *	目的地:文本文件a.txt
	   *	交通工具:输出流
	   */
	   String s = "HelloWorld";
	   File f = new File("a.txt");
	   OutputStream os = new FileOutputSteam(f);
	   // 将字符串转换成字节数组
	   byte[] bys = s.getBytes();
	   os.write(bys);
	   os.close();
	}
}

字节输出流

字节输出流

  • void close( )
    关闭此输出流并释放与此流有关的所有系统资源。

  • void flush( )
    刷新此输出流并强制写出所有缓冲的输出字节。

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

  • void write (byte[ ] b, int off , int len)
    将指定byte 数组中从偏移量off 开始的len 个字节写入此输出液。

  • abstract void write (int b)
    将指定的字节写入此输出流。

1.针对字节流可以不适用flush,针对字符流必须flush,建议都要flush
2.close释放流的资源,同时自带flush

java.io.FileNotFoundExceotion
产生的原因:

  1. 文件盘符不存在
  2. 文件路径父目录不存在

java.io.IOException: Stream Closed
产生原因:

  1. 文件流已经关闭还在继续使用

举一个例子:

public class ByteIODemo02 {
	public static void main(String[] args) throws Exception {
		OutputSteam os = new FileOutputSteam("/os.txt");
		byte[] bys = {97,98,99,100};
		os.write(bye,1,2);
		os.flush();
		os.write(100);
		os.flush();
		os.write("100".getBytes());
		os.flush();
		os.close();
	}
}

文件字节输出流

构造方法
在这里插入图片描述
成员方法
在这里插入图片描述
注意:
在不用的操作系统中对换行符的支持不一样
window \r\n
Linux \n
Mac \r

  1. 字节流在处理换行符的方面不方便
  2. 带append参数的表示追加写入

举一个例子:

public class ByteIODemo03 {
	public static void main(String[] args) throws Exception {
		FileOutputSteam fos = new FileOutputSteam("fos.txt",true);
		for(int i = 1;  i<= 10; i++) {
			fos.write(("HelloWorld" + i).getBytes());
			fos.write("\r\n".getBytes());
			fos.flush();
		}
		fos.close();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值