`
raidyue
  • 浏览: 18311 次
  • 性别: Icon_minigender_1
  • 来自: 湖南常德
社区版块
存档分类
最新评论

I/O体系结构总结

阅读更多

 

I/O体系结构总结

流的概念和分类: java类库中的I/O类分为输入和输出连个部分,并将其抽象为“流(stream)”,他代表任何有能力产生产生数据的数据源对象或者是有能力接收数据的接收对象,形象的说流像一根水管,将数据从一头,传到另一头。

流按方向分可分为:输入流和输出流。

按性质分可以分为:原始流InputStream和OutputStream,缓冲流BufferedInputStream和BufferedOutputStream,基于具体数据的流DataInputStream/DataOutputStream,基于对象读写的流ObjectInput/ObjectOutput.

按操作数据分可分为:字节流和字符流

InputStream/OutputStream及其子类:

InputStream/OutputStream是基于字节的(一个byte一个byte的读取)抽象类,因此InputStream/OutputStream无法创建实例对象,因此我们要使用其子类来创建对象,我们常用的其子类,如FileInputStream/FileOutputStream,我们用这两个类从文件中读取或者输出子类,由于可能会抛出异常,我们用……try{}catch{}……处理,,代码实列

	/**
 	* FileOutputStream/FileInputStream
	 * 
	 * @param fileNam
	 *            :文件名
	 * @return:读到的内容作为字符串返回
	 * @throws IOException可能会抛出IO异常
	 */
	public void readAndWrite(String fileName, String newFileName) {

		try {
			// 构造输出流对象,作为一个InputStream对象
			// 创建的对象是InputStream的子类,我们使用父类的变量引用,方便统一使用
			InputStream is = new FileInputStream(fileName);
			OutputStream os = new FileOutputStream(newFileName);
			// 根据流中的字节长度,创建一个byte数组,保存读取到的数据

			// 将流中读取的数据写入另一文件
			int i = 0;
			//如果没有读到末尾,一边读取一边写入
			while ((i = is.read()) != -1) {
				os.write(i);
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		is.close();
		os.close();

	}
 

 注意:当我们使用完流以后,流并不会自动关闭,而是需要我们手动关闭,在其未关闭时,会一直占用系统资源,就像我们用完水,应该随手关掉水龙头,所以在这里我们也应该关闭流.关闭最上层的流,下层的流也会关闭

 

缓冲流(BufferedInputStream/BufferedOutputStream):

这连个流分别是InputStream/OutputStream的子类,其用法与上述类似,

public void readAndWrite_buffered(String filePath, String newFilePath) {

		// 创建从源文件来的输入流

		try {
			// 创建源文件的输出流
			InputStream is = new FileInputStream(filePath);
			BufferedInputStream bis = new BufferedInputStream(is);
			// 创建源文件的输入流
			OutputStream os = new FileOutputStream(newFilePath);
			BufferedOutputStream bos = new BufferedOutputStream(os);

			int i = 0;
			while ((i = bis.read()) != -1) {
				bos.write(i);
			}
			is.close();
			os.flush();
			os.close();

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
 

上述两种的区别:jvm在计算机内存开辟了专门的区域,

 

当使用第一种方法对文件进行读写时,流的流向是,硬盘某一块空间-->计算机内存-->jvm内存-->计算机内存-->硬盘的另一空间;

使用的耳中方法时会在jvm内存中开辟一小块空间,硬盘某一块空间-->计算机内存-->jvm内存-->缓冲流空间-->vm内存-->计算机内存-->硬盘的另一空间;

缓冲流提高了文件读写的效率,因为如果没有缓冲区,应用程序每次IO都要和设备进行通信,效率很低,因此缓冲区为了提高效率,当写入设备时,先写入缓冲区,等到缓冲区有足够多的数据时,就整体写入设备。

关于DateInputStream和DataOutputStream:

这两种刘只要用来读写指定的数据类型,具体用法与上述类相似。

画板数据保存:

画板保存将在画板总结中详细说明

分享到:
评论
1 楼 GLC 2012-07-16  
吊什么口味、、(欲知后事,且听下回分解)小心要你再写。。。。。

相关推荐

    深入解析DB2--高级管理,内部体系结构与诊断案例.part1.rar

    2.4 存储I/O设计总结 第3章 操作系统相关性能问题 3.1 HP-UX系统性能监控综述 3.2 AIX性能监控综述 3.3 操作系统性能优化 3.4 逻辑卷和lvmo优化 3.5 总结 第4章 数据库物理设计和逻辑设计 4.1 数据库物理设计 4.2 ...

    疯狂内核之——虚拟文件系统

    目录 1 虚拟文件系统概述 5 1.1 通用文件模型 7 1.2 VFS所处理的系统...6 直接I/O与异步I/O 391 6.1 直接I/O 391 6.2 异步I/O 393 6.2.1 Linux 2.6中的异步I/O 394 6.2.2 异步I/O环境 394 6.2.3 提交异步I/O操作 395

    C#高级编程知识点总结

    针对C#高级编程考试重点复习用的文档第1章 .NET体系结构内容小结第2章 托管执行环境的介绍第3章 使用组件第4章 部署与版本控制第5章 对象和类型第7章 数组和集合第8章 委托和事件第9章 内存管理第10章 文件与I/O流...

    深入解析Windows操作系统中文.part2.rar

    无论你是开发人员还是系统管理员,你都可以在本书中找到一些关键的、有关体系结构方面的知识,通过这些知识你可以更好地做系统设计、调试,以及性能优化。 全书内容丰富、信息全面,主要包括的Windows操作系统深度...

    操作系统知识点总结.doc

    计算机体系结构的不断发展 。 人工操作方式的特点:用户独占全机;CPU等待人工操作;独占性;串行性。缺点:计算 机的有效机时严重浪费;效率低 脱机I/O方式的主要优点:减少了CPU的空闲时间;提高I/O速度。 单道批处理...

    嵌入式硬件知识必备,网上总结的

    嵌入式硬件知识必备,网上总结的,计算机能用来干什么?它必须完成什么任务?它是如何实现与人和其他系统交互的?这决定了这台计算机的功能,进而决定了其体系结构、存储器和I/O。

    前端开发常见问题汇总概要总结.docx

    计算机科学基础:对计算机体系结构、操作系统原理、网络通信理论等理解不深,可能会影响对某些高级特性如Node.js中的I/O模型、多线程、进程间通信的理解和高效使用。 HTML/CSS问题 布局与样式兼容性:不同浏览器对...

    [详细完整版]1单片机总结.pdf

    主要阶段 早期阶段 SCM 即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求 最佳的单片形态嵌入式系统的最佳体系结构。"创新模式"获得成功,奠定了 SCM 与通用计算机完全不同的发展道路。在开创嵌入式...

    x86 x64体系探索及编程part1

    145 9.4 SMI 的Back-to-Back 响应 147 9.5 SMM 里开启保护模式 147 9.6 SMM 的版本 148 9.7 I/O 指令的重启及Halt 重启 151 9.8 SMM 的退出 152 9.9 SMBASE 的重定位. 153 9.10 SMI 处理程序的初始化 154 9.11 SMM ...

    宋劲彬的嵌入式C语言一站式编程

    17. 计算机体系结构基础 1. 内存与地址 2. CPU 3. 设备 4. MMU 5. Memory Hierarchy 18. x86汇编程序基础 1. 最简单的汇编程序 2. x86的寄存器 3. 第二个汇编程序 4. 寻址方式 5. ELF文件 5.1. 目标文件 5.2. 可执行...

    C++进阶课程讲义_v1.0.4.pdf

    9.1 I/O流的概念和流类库的结构 51 9.2标准I/O流 53 9.2.1标准输入流 55 9.2.2标准输出流 59 9.3文件I/O 66 9.3.1文件流类和文件流对象 66 9.3.2C++文件的打开与关闭 67 9.3.3C++对ASCII文件的读写操作 69 9.3.4 C++...

    单片机-航标灯控制课程设计.doc

    87C51 是INTEL 公司MCS- 51 系列单片机中基本型产品,它采用INTEL 公司可靠的CHMOS 工艺技术制造的高性能8 位单片机,属于标准的MCS-51 的体系结构和指令系统。它结合了HMOS 的高速和高密度技术及CHMOS的低功耗特征...

    论文研究-虚拟机监视器结构与实现技术.pdf

    首先介绍了虚拟机技术的发展历史以及虚拟机监视器所具有的优点和特性,总结了其体系结构和分类,并分析了虚拟机监视器内部逻辑模块;从CPU虚拟化、内存虚拟化、I/O虚拟化和硬件支持四个方面讨论了虚拟机监视器的实现...

    J2SE技术总结-Java学习精华教程-电子书

    .....I/O_体系 ..........认识IO ..........Java中的IO .....I/O_BIO ..........I/O流对象与使用 ..........文件相关类的使用 .....集合 ..........概述 ..........集合API .....线程 ..........概念 ..........操作...

    【Java学习+面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识.rar

    I/O Java 8 编程规范 网络 操作系统 Linux相关 数据结构与算法 数据结构 算法 数据库 MySQL Redis 系统设计 设计模式(工厂模式、单例模式 ... ) 常用框架(Spring、Zookeeper ... ) 数据通信(消息队列、Dubbo ... ) ...

    嵌入式Linux C编程入门(第2版) PPT

    1.3.3 arm体系结构简介 17 1.3.4 s3c2410处理器简介 18 1.4 嵌入式系统硬件平台选型 22 1.4.1 硬件平台的选择 22 1.4.2 arm处理器选型 23 1.5 嵌入式系统开发概述 25 1.5.1 嵌入式系统开发流程 ...

    千兆以太网技术与应用

    第9章 千兆以太网体系结构及概述 85 9.1 千兆以太网体系结构 85 9.2 千兆以太网技术概述 86 9.2.1 更高层软件和接口 86 9.2.2 MAC操作 86 9.2.3 信号编码 87 9.2.4 物理介质和信令 88 9.2.5 拓扑 90 9.2.6 介质无关...

    java8源码-javaGuide:【Java学习】一份涵盖大部分Java程序员所需要掌握的核心知识。https://javaguide.cn

    java8 源码 目录 Java ...数据结构总结重构(---正在进行中---) 说明 JavaGuide介绍 对于 Java 初学者来说: 本文档倾向于给你提供一个比较详细的学习路径,让你对于Java整体的知识体系有一个初步认识

    java8源码-javaGuide:java面试整理

    java8 源码 目录 Java ...数据结构总结重构(---正在进行中---) 说明 JavaGuide介绍 对于 Java 初学者来说: 本文档倾向于给你提供一个比较详细的学习路径,让你对于Java整体的知识体系有一个初步认识

    Linux网络编程

    6.10 五种I/O 模式................ 179 6.10.1 阻塞I/O 模式... 179 6.10.2 非阻塞模式I/O.... 180 6.10.3 I/O 多路复用.... 181 6.10.4 信号驱动I/O 模式........... 182 6.10.5 异步I/O 模式... 185 6.10.6 几种I...

Global site tag (gtag.js) - Google Analytics