IO流的分类与FileWriter类

本文详细介绍了Java IO流的基本概念、分类和体系结构,重点关注了FileWriter类的使用。FileWriter用于将文本内容写入文本文件,提供了多种构造方法和写入操作,如写入单个字符、字符数组等。通过示例代码展示了如何创建FileWriter对象,写入数据并关闭流,以及如何追加内容到文件。
摘要由CSDN通过智能技术生成

1、IO流的基本概念

IO即输入输出的简写,也是这个含义。

IO流就是指读写数据时想水流一样从一端到另一端,因此得“流”这个名字。


2、基本分类

其中对输入输出流的理解可以参考下边的图所示:【文件在硬盘上,程序在内存中】

输入流:指从文件(硬盘)中读取数据内容到程序(内存中) ,读文件。

输出流:指将程序中数据内容输出到文件中,写文件。


 3、体系结构

分类字节输入流字节输出流字符输入流字符输出流
抽象基类InputStreamOutputStreamReaderWriter
访问文件FileInputStreamFileoutputStreamFileReaderFileWriter
访问数组ByteArrayInputStreamByteArrayOutputStreamCharArrayReaderCharArrayWriter
访问管道PipeInputStreamPipeOutPutStreamPipedReaderPipeWriter
访问字符串--------StringReaderStringWriter
缓冲流BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter
转换流------InputStreamReaderOutputStreamWriter
对象流ObjectInputStreamObjectOutputStream------
FilterInputStreamFileOutputStreamFilterReaderFilterWriter
打印流---PrintStream---PrintWriter
推回输出流PushbackInputStream---PushbackReader---
特殊流DataInputStreamDataOutputStream------

常用 IO流结构:


 4、FileWriter类的概念和基本使用

    4.1、FileWriter类

    4.1.1、基本概念

    Java.io.FileWriter类最主要用将文本内容写入到文本文件。


   4.1.2、常用方法

方法声明功能介绍
FileWriter(String fileName)根据参数指定的文件名构造对象
FileWriter(Sreing fileName,boolean append)以追加的方式根据参数指定的文件名来构造对象
void writer(int c)写入单个字符
void writer(char[ ]cbuf,int off,int len)将指定字符数组中从偏移量off开始的len个字符写入次文件输出流
void writer(char[ ]cbuf)将cubf.length个字符从指定字符数组写入此文件输出流
void flush()刷新流
void close()关闭流对象并释放有关的资源

   4.1.3、FileWriter代码

        FileWriter fw = null;
		try {
			// 1、构造FileWriter类型的对象与d:/a.txt文件关联
			// 若文件不存在,则会自动创建一个新的文件
			// 若文件存在,该流会清空文件中的原有内容
			fw = new FileWriter("d:/a.txt");
			//fw=new FileWriter("d:/a.txt",true);
			// 2、通过流对象写入数据内容
			fw.write('a');
			System.out.println("写入数据成功!");
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 3、关闭流对象并释放有关资源
			if (null != fw) {
				try {
					fw.close();
				} catch (IOException e) {
					// TODO: handle exception
					e.printStackTrace();
				}
			}
		}

一开始d盘下并没有a.txt文件,则运行代码之后,则会自动创建一个a.txt文件,并在其中写入‘a’

但是当连续运行时,并不会在a.txt文件中连续的添加字符‘a’;但是当把这行代码在后面添加True这项之后就可以连续在a.txt文件中添加‘a’这个字符了~


上边的常用方法的表格中还涉及到写入一段长度的字符数组和写入整个字符数组,代码如下:

FileWriter fw = null;
		try {
			// 1、构造FileWriter类型的对象与d:/a.txt文件关联
			// 若文件不存在,则会自动创建一个新的文件
			// 若文件存在,该流会清空文件中的原有内容
			fw = new FileWriter("d:/a.txt");
//			fw=new FileWriter("d:/a.txt",true);
			// 2、通过流对象写入数据内容,每当写入一个字符后则文件中的读写位置向后移动一位
			fw.write('a');
			
			//准备一个字符数组
			char[] cArr=new char[] {'h','e','l','l','o'};
			//将字符数组中的一部分写进去
			fw.write(cArr,1,3);//ell
			//将整个字符数组写进去
			fw.write(cArr);
			
			fw.flush();
			System.out.println("写入数据成功!");
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 3、关闭流对象并释放有关资源
			if (null != fw) {
				try {
					fw.close();
				} catch (IOException e) {
					// TODO: handle exception
					e.printStackTrace();
				}
			}
		}

运行结果:

这里会注意到它并没有因为后续的写入将原有的内容进行覆盖,我们分析一下代码的执行流程就明白了;代码的执行是从上到下的顺序进行执行,因此a.txt文件并没有一次又一次进行创建,因此在写入字符‘a’之后。它的“光标”是一步一步往后移动的,因此并不会进行内容的覆盖,它相当于关联文件之后的代码是一个整体,除发生异常之外,要么都执行,要么都不执行,因此最终的运行效果就是上图啦~~~ 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值