《java编程思想》第十八章 java I/O系统
2016-09-19 17:10
239 查看
对程序语言来说,创建一个好的输入/ 输出(I/O)系统是一项艰难的任务。所以有必要了解下 I / O 类库的演化过程,因为缺乏历史的眼光我们很快就会不知道在什么时候使用那些类。
首先File类:既可指文件也可以指代目录文件夹。当返回的是某目录下的一组文件的名称时,存储这些名称的是数组。
目录列表器:两种方式使用File对象一种直接调用不带参数的list(),拿到数组然后sort()进行排序。
目录实用工具:方法一:listFile().asList().sort() 方法二:recurseDirs()
目录检查及创建:renameTo()用来把文件 重命名/移动 有参数指定的路径的目录下。
输入和输出:Inputstream或者Reader 都含有read()方法,用于读取单字节或字节数组。Outputstream或者Writer都含有write()方法。java中"流"类库让人迷惑的主要原因在于:创建单一的结果流,却需要创建多个对象。
下面试关于Inputstream类型:数据源包括:1字节数组 2String对象 3文件 4“管道”工作方式其实与管道相似 5由其他种类的流组成的序列,以便我们可以将它们收集合并到一个流内 6其他数据源,例如Internet连接等。。。
inputstream类型的装饰器:
ByteArrayInputStream:InputStream的缓冲区,字节流
DataIputstream:允许读取不同基本类型以及String对象
StringBufferInputStream:底层实现使用的是StringBuffer,字符串流
FileInputStream:用于文件流中读取信息,字符串,表示文件名、文件、或FileDescriptor对象。
PipedInputStream:产生用于写入PipedOutputStream的数据。实现“管道化”概念。
SequenceInputStream:将两个或多个InputStream转换成单一的InputStream
FileterInputStream:抽象类,作为装饰器的接口,为其他的inputStream类型提供功能
Outputstream类型的装饰器:
ByteArrayOutputStream:在内存中创建缓冲区,所有送往“流”的数据都要放置在缓冲区中,缓冲区大小可设置
DataOutputStream:通过数据“流”将基本类型的数据从一个地方迁移到另一个地方
FileOutputStream:用于将信息写入文件,字符串,表示文件名、文件、或FileDescriptor对象。
PipedOutputStream:任何写入其中的信息都会自动作为PipedOutputStream的输出。实现“管道化”概念。
FileterOutputStream:抽象类,作为装饰器的接口,为其他的OutputStream类型提供功能
添加属性和有用的接口:java的I / O 库类中存在“filter”类的原因是filter类是所有装饰类的基类。
Reader 和Writer主要是为了国际化。
RandomAccessFile自我独立的类:有大小已知的记录组成的文件。
I/O的经典实用方式:1缓冲输入文件 2从内存输入 3格式化的内存输入 4基本的文件输出 5文件输出的快捷方式 6存储或者恢复数据 7读写随机访问文件 8读取二进制文件
标准I/O:System.in、System.out、System.err。其中System.out、System.err事先被包装成printStream,System.in确实一个没有经过包装的InputStream。这就意味着System.in在使用之前必须进行包装(通常会用readLine())。
java I/O重定向操作的是字节流而不是字符流。所以使用的是Inputstream和OutputStream而不是Reader和Writer。
字节存放次序:big endian(高位优先):将最重要的字节存在地址最低的存储单元。 little endian:与高位优先相反
缓冲器:高效访问及操作数据的四个索引组成(mark、position、limit、capacity)
压缩:java的I/O支持读写压缩格式的数据流。主要的类有CheckedInputStram CheckOUtputStream DeflaterOutputStream ZipOutputStream GZIPOutputStream InflaterInputStream ZipInputStream GZIPInputStream
对象序列化:java对象序列化将实现Serilizable接口对象转化成一个字节序列。这样就可以实现轻量级“持久化”,即便经过网络传输到不同系统的电脑中也可以准确的重组。
总的来说:java的I/O满足了我们的基本需求:我们可以通过控制台、文件、内存块甚至因特网进行读写,通过继承创建输入输出对象等等。
首先File类:既可指文件也可以指代目录文件夹。当返回的是某目录下的一组文件的名称时,存储这些名称的是数组。
目录列表器:两种方式使用File对象一种直接调用不带参数的list(),拿到数组然后sort()进行排序。
目录实用工具:方法一:listFile().asList().sort() 方法二:recurseDirs()
目录检查及创建:renameTo()用来把文件 重命名/移动 有参数指定的路径的目录下。
输入和输出:Inputstream或者Reader 都含有read()方法,用于读取单字节或字节数组。Outputstream或者Writer都含有write()方法。java中"流"类库让人迷惑的主要原因在于:创建单一的结果流,却需要创建多个对象。
下面试关于Inputstream类型:数据源包括:1字节数组 2String对象 3文件 4“管道”工作方式其实与管道相似 5由其他种类的流组成的序列,以便我们可以将它们收集合并到一个流内 6其他数据源,例如Internet连接等。。。
inputstream类型的装饰器:
ByteArrayInputStream:InputStream的缓冲区,字节流
DataIputstream:允许读取不同基本类型以及String对象
StringBufferInputStream:底层实现使用的是StringBuffer,字符串流
FileInputStream:用于文件流中读取信息,字符串,表示文件名、文件、或FileDescriptor对象。
PipedInputStream:产生用于写入PipedOutputStream的数据。实现“管道化”概念。
SequenceInputStream:将两个或多个InputStream转换成单一的InputStream
FileterInputStream:抽象类,作为装饰器的接口,为其他的inputStream类型提供功能
Outputstream类型的装饰器:
ByteArrayOutputStream:在内存中创建缓冲区,所有送往“流”的数据都要放置在缓冲区中,缓冲区大小可设置
DataOutputStream:通过数据“流”将基本类型的数据从一个地方迁移到另一个地方
FileOutputStream:用于将信息写入文件,字符串,表示文件名、文件、或FileDescriptor对象。
PipedOutputStream:任何写入其中的信息都会自动作为PipedOutputStream的输出。实现“管道化”概念。
FileterOutputStream:抽象类,作为装饰器的接口,为其他的OutputStream类型提供功能
添加属性和有用的接口:java的I / O 库类中存在“filter”类的原因是filter类是所有装饰类的基类。
Reader 和Writer主要是为了国际化。
RandomAccessFile自我独立的类:有大小已知的记录组成的文件。
I/O的经典实用方式:1缓冲输入文件 2从内存输入 3格式化的内存输入 4基本的文件输出 5文件输出的快捷方式 6存储或者恢复数据 7读写随机访问文件 8读取二进制文件
标准I/O:System.in、System.out、System.err。其中System.out、System.err事先被包装成printStream,System.in确实一个没有经过包装的InputStream。这就意味着System.in在使用之前必须进行包装(通常会用readLine())。
java I/O重定向操作的是字节流而不是字符流。所以使用的是Inputstream和OutputStream而不是Reader和Writer。
字节存放次序:big endian(高位优先):将最重要的字节存在地址最低的存储单元。 little endian:与高位优先相反
缓冲器:高效访问及操作数据的四个索引组成(mark、position、limit、capacity)
压缩:java的I/O支持读写压缩格式的数据流。主要的类有CheckedInputStram CheckOUtputStream DeflaterOutputStream ZipOutputStream GZIPOutputStream InflaterInputStream ZipInputStream GZIPInputStream
对象序列化:java对象序列化将实现Serilizable接口对象转化成一个字节序列。这样就可以实现轻量级“持久化”,即便经过网络传输到不同系统的电脑中也可以准确的重组。
总的来说:java的I/O满足了我们的基本需求:我们可以通过控制台、文件、内存块甚至因特网进行读写,通过继承创建输入输出对象等等。
相关文章推荐
- 《java编程思想》第十八章 java I/O系统
- java编程思想读书笔记 第十八章 java I/O系统(第二篇)
- 第十八章:Java I/O系统
- java编程思想读书笔记 第十八章 java I/O系统(第一篇)
- 《Java编程思想》第18章 Java I/O系统
- 《Java编程思想》Java I/O系统章节阅读笔记
- java编程思想读书笔记 第十八章 java I/O系统(第三篇)
- 转载《Java编程思想》Java I/O系统章节阅读笔记
- 《Java编程思想》读书笔记-第18章JavaI/O系统(1)
- java编程思想读书笔记 第十八章 java I/O系统(第五篇)
- 《Thinking in java 4rf edition》笔记——第十八章 Java I/O系统
- Thinking in Java——第十八章-Java I/O系统
- java编程思想读书笔记 第十八章 java I/O系统(第四篇 新I/O)
- Java编程思想 第十八章 Java I/O系统
- 再读《Java编程思想》(Review 《Thinking in Java 3rd》)(1-4章)
- JAVA I/O系统
- 《Java编程思想》学习笔记6——Java动态代理
- 《Java编程思想》学习笔记11——Java I/O
- 《java编程思想》学习笔记-----Java 流
- Java编程思想重点笔记(Java开发必看)