百科狗-知识改变命运!
--

IO空间和内存空间主要什么区别

一语惊醒梦中人1年前 (2023-12-17)阅读数 11#综合百科
文章标签地址内存

IO地址是CPU读写外部设备时使用的地址。

内存地址是CPU读写内存(括REM和ROM)时使用的地址。

多数精简指令CPU不区分访问的是内存还是外设,使用统一的指令和统一的地址空间去访

问外设和内存。在这种情况下,需要译码电路把所有的外设I/O地址和内存地址按照规则安排在一个空间里,学惯了X86CPU的也可把这叫作I/O地址映射成内存地址空间吧,虽然实际上这些CPU并没有I/O地址空间和内存地址空间的概念。

并不是所有的体系结构都有IO空间这个定义的,我所了解的只有X86体系上有,而ARM体系结构就没有这种区别,在X86上IO空间和内存是独立的,他们各自有各自的总线,并且IO空间一般是64K,即16位内存空间为4G,可见他们的差别是很大。

嗨?你好

ava?IO的一般使用原则:

一、按数据来源(去向)分类:

1、是文件:?FileInputStream,?FileOutputStream,?FileReader,?FileWriter

2、是byte[]:ByteArrayInputStream,?ByteArrayOutputStream

3、是Char[]:?CharArrayReader,?CharArrayWriter

4、是String:?StringBufferInputStream,?StringReader,?StringWriter

5、网络数据流:InputStream,?OutputStream,?Reader,?Writer

二、按是否格式化输出分:

1、要格式化输出:PrintStream,?PrintWriter

三、按是否要缓冲分:

1、要缓冲:BufferedInputStream,?BufferedOutputStream,?BufferedReader,?BufferedWriter

四、按数据格式分:

1、二进制格式(只要不能确定是纯文本的):?InputStream,?OutputStream及其所有带Stream结束的子类

2、纯文本格式(含纯英文与汉字或其他编码方式);Reader,?Writer及其所有带Reader,?Writer的子类

五、按输入输出分:

1、输入:Reader,?InputStream类型的子类

2、输出:Writer,?OutputStream类型的子类

六、特殊需要:

IO空间和内存空间主要什么区别

1、从Stream到Reader,Writer的转换类:InputStreamReader,?OutputStreamWriter

2、对象输入输出:ObjectInputStream,?ObjectOutputStream

3、进程间通信:PipeInputStream,?PipeOutputStream,?PipeReader,?PipeWriter

4、合并输入:SequenceInputStream

5、更特殊的需要:PushbackInputStream,?PushbackReader,?LineNumberInputStream,?LineNumberReader

决定使用哪个类以及它的构造进程的一般准则如下(不考虑特殊需要):

首先,考虑最原始的数据格式是什么:?原则四

第二,是输入还是输出:原则五

第三,是否需要转换流:原则六第1点

第四,数据来源(去向)是什么:原则一

第五,是否要缓冲:原则三?(特别注明:一定要注意的是readLine()是否有定义,有什么比read,?write更特殊的输入或输出方法)

第六,是否要格式化输出:原则二

Java中Inputstream与Reader的区别

Reader支持16位的Unicode字符输出,InputStream支持8位的字符输出。

Reader和InputStream分别是I/O库提供的两套平行独立的等级机构,

InputStream、OutputStream是用来处理8位元的流,

Reader、Writer是用来处理16位元的流。

而在JAVA语言中,byte类型是8位的,char类型是16位的,所以在处理中文的时候需要用Reader和Writer。

值得说明的是,在这两种等级机构下,还有一道桥梁InputStreamReader、OutputStreamWriter负责进行InputStream到Reader的适配和由OutputStream到Writer的适配。?

java.io.Reader?和?java.io.InputStream?组成了?Java输入类。Reader?用于读入16位字符,也就是?Unicode编码的字符;而?InputStream?用于读入?ASCII字符和二进制数据。

在?Java中,有不同类型的?Reader?输入流对应于不同的数据源:

FileReader?用于从文件输入;

CharArrayReader?用于从程序中的字符数组输入;

StringReader?用于从程序中的字符串输入;

PipedReader?用于读取从另一个线程中的?PipedWriter?写入管道的数据。

相应的也有不同类型的?InputStream?输入流对应于不同的数据源:FileInputStream,ByteArrayInputStream,StringBufferInputStream,PipedInputStream。另外,还有两种没有对应?Reader?类型的?InputStream?输入流:

Socket?用于套接字;

URLConnection?用于?URL?连接。

这两个类使用?getInputStream()?来读取数据。

相应的,java.io.Writer?和?java.io.OutputStream?也有类似的区别。

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)