黑马程序员_基础_IO流学习笔记_IO流基础

------- android培训java培训、期待与您交流!----------

1、IO流概述

IO流用来处理设备之间的数据传输;Java对数据的操作是通过流的方法;Java用于操作流的对象都在IO包中;流按操作数据分为两种:字节流和字符流;流按流向分为:输入流、输出流。

字符流可以在内部融合编码表,可以指定使用哪个编码表,以解决乱码问题。

字节流的抽象基类:InputStream、OutputStream;字符流的抽象基类:Reader、Writer。由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。如:InputStream的子类FileInputStream;Reader的子类FileReader。

2、IO流-FileWriter

Writer是写入字符流的抽象类。子类必须实现的方法仅有 write(char[], int, int)、flush() 和 close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能。

下面是简单的FileWriter例子,以及一些要点说明:

public static void fileWriter() throws IOException{		//FileWriter
		
		//创建一个FileWriter对象,该对象一被初始化就必须要明确被操作的文件。
		//而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。
		//其实该步就是在明确数据要存放的目的地。
		Writer writer = new FileWriter("G:\\TestFolder\\writer.txt");
		
		//调用write方法,将字符串写入到流中
		writer.write("你是程序猿");
		//将缓冲区存放的数据插入到文件中
		writer.flush();
		writer.write("   你全家都是程序猿");
		
		//关闭流资源,关闭之前会刷新一次内部缓冲区的数据。close之后不能继续使用流写入字符串
		//java写入数据实质是调用系统内部的方式完成数据的插入,会使用系统的资源,因此结束插入数据之前需要close()
		writer.close();
	}

3、IO流-IO异常处理方式

推荐文件分隔符使用 File.separator 替代双斜杠“\\”,下面是IO异常处理方式的简单例子,以及一些要点说明:

public static void ioException(){		//IO异常处理方式
		
		Writer writer = null;	//将writer定义在外部
		try {
			writer = new FileWriter("G:" + File.separator + "TestFolder" + File.separator + "ioexception.txt");
			writer.write("我是一个程序猿");
		} catch (IOException e) {
			e.printStackTrace();
		} finally {		//finally块中的代码一定会执行,所以要将close方法写到里面
			try {
				if(writer != null)		//如果writer初始化异常,直接关闭writer会报异常,需判断是否为null
					writer.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

4、IO流-文件的续写

实例化一个FileWriter流的时候,在文件名后面再传递一个boolean的参数可控制是否覆盖源文件。下面是文件续写的简单例子,以及一些要点说明:

public static void ioFileWritten(){		//IO流-文件的续写
		
		Writer writer = null;
		String spr = File.separator;
		
		//传递一个true参数,代表不覆盖已有的文件,并在已有文件的末尾处进行数据的续写
		try {
			writer = new FileWriter("G:" + spr + "TestFolder" + spr + "writer.txt", true);
			writer.write("本文件可续写\t");			//\t表示制表符
			writer.write("我在上面\r\n我在下面");	//windows系统需使用\r\n换行,linux系统\n即可换行
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if(writer != null)
				try {
					writer.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
		}
		
	}


------- android培训java培训、期待与您交流! ----------详细请查看: www.itheima.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值