IO体系详解

IO体系表如下:

IO体系表

表中蓝底部分为开发中常用类,访问文件也称为节点流或者文件流;它们的关系如下:



1、字符流(FileReader和FileWrite)-处理文本文件。使用实例代码如下:

	public void fileReader() {
		//1 提供具体的流
		FileReader fileReader = null;
		try {
			//2 实例化File对象
			File file = new File("src/HelloWorld");
			fileReader = new FileReader(file);
			//3.1 read()是读一个字符,如果读到文件末尾返回-1
			//3.2 read(char[] cbuf)将数据读如char[]中
			int data;
			do {
				data = fileReader.read();
				System.out.print((char) data + " ");
			} while (data != -1);
		} catch (Exception e) {
		}finally {
			try {
				//无论是否读取成功,都需要保证输入流关闭
				if(fileReader!=null)
					fileReader.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	public void fileWrite() throws IOException {
		//实例化File对象
		File file = new File("src/HelloWorld1");
		System.out.println(file.getAbsolutePath());
		//提供FileWriter流对象
		/*
		 * FileWriter(File file,boolean append),
		 * 	append为true的话将直接在已存在的文件末尾添加内容
		 * 	append为false的话将新建文件覆盖旧文件,并添加内容
		 */
		FileWriter fileWriter = new FileWriter(file);
		//向文件写内容
		fileWriter.write("this is my writer");
		//关闭流对象
		fileWriter.close();
	}

2、字节流(FileInputStream和FileOutStream)-处理非文本文件;实例代码参考字符流代码。

3、缓冲流(BufferInputStream和BufferOutputStream);实例代码如下:

	public void testBufferStream() {
		FileInputStream fileInputStream=null;
		FileOutputStream fileOutputStream=null;
		BufferedInputStream bufferedInputStream=null;
		BufferedOutputStream bufferedOutputStream=null;
		try {
			//创建File对象
			File file = new File("src/Pic.png");
			File file2 = new File("src/Pic1.png");
			//创建节点流FileInputStream
			fileInputStream = new FileInputStream(file);
			fileOutputStream = new FileOutputStream(file2);
			//创建缓冲流
			bufferedInputStream = new BufferedInputStream(fileInputStream);
			bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
			//
			byte[] buffer = new byte[10];
			int len;
			while ((len = bufferedInputStream.read(buffer)) != -1) {
				bufferedOutputStream.write(buffer, 0, len);
			} 
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			try {
				//由外到里关闭;其实这个关闭外层流之后里层也关闭了
				bufferedInputStream.close();
				bufferedOutputStream.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		}
	}

4、转换流(InputStreamReader和OutputStreamWriter)

注意!当new File(path)时,path是以当前项目为根的相对路径。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值