电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

JavaIO系统基础知识

8页
  • 卖家[上传人]:新**
  • 文档编号:471733066
  • 上传时间:2024-02-19
  • 文档格式:DOC
  • 文档大小:45.51KB
  • / 8 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、Java I/O系统基础知识2011-12-19 14:05 亚卓 亚卓的博客我要评论(0)字号:T|T编程语言的I/O类库中常常使用流这个抽象的概念,它代表任何有能力产生数据的数据源对象或时有能力接收数据的接收端对象。“流”概念源于UNIX中的管道(pipe)的概念。AD:编程语言的I/O类库中常常使用流这个抽象的概念,它代表任何有能力产生数据的数据源对象或时有能力接收数据的接收端对象。“流”概念源于UNIX中的管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等,它屏蔽了实际的I/O设备中处理数据的细节。 一个流,必有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是Internet上的某个URL。 流的方向是重要的,根据流的方向,流可以分为两类:输入流和输出流。其实输入/输出是想对于内存来说的。 实际上,流的源端和目的端可简单地看成是字节的生产者和消费者,对于输入流,可不必关心它的源端是什么,只要简单地从流中读数据,而对输出流,也可不知道它的目的端,只是简单地往流中写数据。1: a.流:一组

      2、有序的数据序列。2: b.字节流:数据流中最小的数据单元是字节。3: c.字符流:数据流中最小的数据单元是字符。一、java.io包中的类对应两类流一类流直接从指定的位置(如磁盘文件或内存区域)读或写,这类流称为结点流,其他的流则称为过滤流(包装流)过滤流:一些流可以从文件以及其他地方接收字节,另一些流可以将字节组合成更有用的数据类型。将一个已经存在的流传递给另一个流的构造方法,将这两种流结合起来,结合后的流被称为过滤流。过滤器输入流往往是以其它输入流作为它的输入源,经过过滤或处理后再以新的输入流的形式提供给用户,过滤器输出流也类似。 我们很少用单一的类来创建流对象,而是通过叠合多个对象来提供所期望的功能(即装饰器设计模式)。java的常用输入、输出流其实都是继承自4个抽象类,分别是 基于单字节的InputStream,OutputStream类(面向字节形式的/) 基于双字节的Unicode代码单元的 Reader, Writer类(面向字符形式的/)一旦打开输入流后,程序就可从输入流串行地读数据。从输入流读/写数据的过程一般如下:打开一个流通道-读取/写信息-关闭流通道。在java

      3、平台中,有以下两种方式能获得本地平台的字符编码类型:(a)System.getProperty(file.encoding);(b) Charset cs=Charset.defaultCharset();所有的输入流、输出流都可以分为字节(输入、输出)流,字符(输入、输出)流,处理字节的主要是(OutputStream/InputStream) 系列,处理字符的,主要是(Reader/Write)系列。二、以字节(Byte)为导向的输入流(InputStream系列),这几个类都可以与FileInputStream对象相连以提供有用接口:1) ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用2) StringBufferInputStream(在java1.1中已经弃用了1)把一个String对象作为InputStream,底层实现使用StringBuffer2) FileInputStream:把一个文件作为InputStream,实现对文件的读取操作(文件名、文件、FileDescriptor对象)3) PipedInputStream

      4、:实现了pipe的概念,主要在线程中使用(作为多进程中的数据源)4) SequenceInputStream:把多个InputStream合并为一个InputStream以字节(Byte)为导向的输出流(OutputStream系列),可以与ilterOutputStream对象相连以提供有用接口:1) ByteArrayOutputStream:在内存中创建缓冲区,把信息存入内存中的一个缓冲区中,缓冲区初始化尺寸(可选)2) FileOutputStream:把信息存入文件中(文件名、文件、FileDescriptor)3) PipedOutputStream:实现了pipe的概念,主要在线程中使用(指定用于多线程的数据的目的地)三、与之对应的(Reader/Writer)系列:1: Reader: 与InputStream相对应,适配器InputStreamReader2: Writer: 与OutputStream相对应,适配器为OutputStreamWriter3: FileReader: 与FileOutputStream相对应4: FileWriter: 与FileOur

      5、putStream相对应5: StringReader: 无相对应的类6: StringWriter: 与ByteArrayInputStream相对应7: CharArrayReader: 与ByteArrayOutputStream相对应8: CharArrayWriter: 与ByteArrayOutputStream相对应9: PipedReader: 与PipedInputStream相对应10: PipedWriter: 与PipedOutputStream相对应四、两种不限导向的stream之间的转换(使用适配器类)InputStreamReader和OutputStreamReader:把一个以字节为导向的stream转换成一个以字符为导向的stream。InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。它使用的

      6、字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。五、通过FilterInputStream从InputStream读取数据:1) DataInputStream:从stream中读取基本类型(int、char,long等)数据。2) BufferedInputStream:使用缓冲区 ,使用它可以防止每次读取都得进行实际的读操作3) LineNumberInputStream:会记录input stream内的行数,然后可调用getLineNumber()和setLineNumber(int)4) PushbackInputStream:很少用到,一般用于编译器开发通过FilterOutputStream向OutputStream写入:1) DataIOutputStream:可以按照移植方式往stream中输出基本类型(int、char,等)数据。2) BufferedOutputStream:使用缓冲区 ,使用它可避免每次发送数据都进行实际的写操作3) PrintStream:产生格式化输出 ,其中DataOutputStream处理数据的存储,PrintStream处

      7、理显示六、更改流的行为:尽管BufferedOutputStream是FilterOutputStream的子类,但是BufferedWriter并不是FilterWriter的子类,(FilterWriter是抽象类,没有任何子类)1) 没有与DataInputStream对应的类。除非在要使用readLine()时改用BufferedReader,否则使用DataInputStream2) BufferedReader:与BufferedInputStream对应3) LineNumberReader:与LineNumberInputStream对应4) PushBackReader:与PushbackInputStream对应5) BufferedWrite:与BufferedOutStream对应6) PrintWrite:与 PrintStream对应七、自我独立的类:RandomAccessFile:这个类适用于有大小已知的记录组成的文件,RandomAccessFile除了实现了DataInput和DataOutput接口(DataInputStream和DataOutp

      8、utStream也实现了这两个接口)之外,这个类是个完全独立的类,它拥有和别的I/O类型本质不同的行为,可以在一个文件内向前和向后移动,直接从Object派生而来。1) 可通过RandomAccessFile对象完成对文件的读写操作2) 在产生一个对象时,可指明要打开的文件的性质:r,只读;w,只写;rw可读写3) 可以直接跳到文件中指定的位置RandomAccessFile的大部分功能(不是全部)有nio存储映射文件所取代八、I/O流的典型使用方式:1)缓冲输入文件1. importjava.io.BufferedReader; 2. importjava.io.FileReader; 3. importjava.io.IOException; 4. publicclassBufferedInputFile 5. publicstaticStringread(Stringfilename)throwsIOException 6. BufferedReaderin=newBufferedReader(newFileReader(filename); 7. Strings; 8. Str

      9、ingBuildersb=newStringBuilder(); 9. while(s=in.readLine()!=null) 10. sb.append(s+n); 11. 12. in.close(); 13. returnsb.toString(); 14. 15. publicstaticvoidmain(Stringargs)throwsIOException 16. System.out.println(read(C:UserswubinworkspaceImpsrcno9 17. BufferedInputFile.java); 18. 19. 2)从内存输入1. importjava.io.IOException; 2. importjava.io.StringReader; 3. publicclassMemoryTest 4. publicstaticvoidmain(Stringargs)throwsIOException 5. StringReaderin=newStringReader(BufferedInputFile.read(C:Userswubin 6. workspaceImpsrcno9BufferedInputFile.java); 7. intc; 8. while(c=in.read()!=-1) 9. System.out.print(char)c); 10. 11. 3)格式化的内

      《JavaIO系统基础知识》由会员新**分享,可在线阅读,更多相关《JavaIO系统基础知识》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.