




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JavaIO的一般使用原则: 一、按数据来源(去向)分类: 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类型的子类 六、特殊需要: 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更特殊的输入或输出方法) 第六,是否要格式化输出:原则二InputStream、OutputStream与Reader、Writer的区别一、区别 InputStream、OutputStream直接操作byte数组。 Reader、Writer在操作时会进行decode、encode,会根据你的系统属性编码格式对数据进行编码或解码。但是当文件的编码格式与当前系统的不一致时,就需要做编码的转换。二、转换 new OutputStreamWriter(FileUtils.openOutputStream(new File(filePath), ms932) new InputStreamReader(FileUtils.openInputStream(new File(filePath), ms932) 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 也有类似的区别。InputStream.read()返回int ,且范围为0到255间int值 ,从输入流读取下一个数据字节,它是以字节为单位来读的,即每次只读取一个字节内容 ,读取后面三前面补三个字节的0,这样读取出来的结果就永远为正,且为0到255间的数。如果因已到达流末尾而没有可用的字节,则返回值-1 。用于进制文件的读取。如果我们读取的是二进制文件,如图片声音文件时,我们应该使用如下两种方式来读取:第一种 :还是使用InputStream.read(),方法来读取,只不过我们把int型强制转换byte型即可,这样在转换的过程中,会丢弃前三个字节所补的零,最终得到从流中读取的真实的编码。但如果这样直接通过read()方法读取,而不是通过read(byte b)时,我们判断流是否结尾,最好使用available()方法来判断,当然也可以使用直接比较读出的结果是否为-1,但是要注意的是我们不能在读取后强转成byte型后再判断,因为二进制文件有可能有-1的编码。第二种 :使用InputStream.read(byte b)来接收,因为这样不会有byte到int提升的过程,byte数组b里存储的就是真实的编码。如果read(byte b)读取到流的尾,则返回-1,所以我们直接判断返回的读取子节数就可知道流是否结束。OutputStream.write(int b)将指定的字节写入此输出流。write 的规定是:向输出流写入一个字节。要写入的字节是参数b的八个低位。b 的24个高位将被忽略。此方法能向文件中写入负数编码,即可写入二进制流的文件,如声音、图片等文件。 我们再来看看Reader与Writer字符流相应方法: Reader.read Reader.read:读取单个字符。在有可用字符、发生 I/O 错误或者已到达流的末尾前,此方法一直阻塞。范围在 0 到 65535 之间 (0x00-0xffff),实质上读取出来的就是一个char型,即为Unicode编码了。如果已到达流的末尾,则返回 -1 Writer. write(int c) Writer. write(int c):写入单个字符。要写入的字符包含在给定整数值的 16 个低位中,16 高位被忽略。 从上面
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司财务培训课件
- 亲爱的祖国课件
- 研发工程部门工作总结
- 《诗经·蒹葭》课件
- 公司组织安全生产月培训课件
- 手机银行技术方案V3.1(商行)
- 2025年《健康素养66条》知识竞赛全部题目及答案
- 《论教养》课件教学课件
- 亮化安全事故培训课件
- 事物普遍性课件
- 开学第一课暨校长思政课:弘扬伟大抗战精神赓续强国复兴血脉
- 代销理财管理办法
- 中国老年骨质疏松症诊疗指南(2023)解读
- 教科版新版科学三年级上册《6.观察云》教案
- 《中兽药生产技术》课件-14.中药炮制方法-火制
- 化工管道支架培训课件
- 办公楼供电线路改造方案
- 12YJ11 卫生、洗涤设施设计图集
- 2025年保密教育线上培训试题参考答案
- 资产评估机构采购方案投标文件(技术方案)
- 《老年上消化道出血急诊诊疗专家共识(2024)》解读
评论
0/150
提交评论