知识大全 彻底明白Java的IO系统
Posted 字节
篇首语:相逢意气为君饮,系马高楼垂柳边。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 彻底明白Java的IO系统相关的知识,希望对你有一定的参考价值。
彻底明白Java的IO系统 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
彻底明白Java的IO系统 caiyi (收藏) 关键字 Java IO系统 一. Input和Output stream代表的是任何有能力产出数据的数据源 或是任何有能力接收数据的接收源 在Java的IO中 所有的stream(包括Input和Out stream)都包括两种类型 以字节为导向的stream 以字节为导向的stream 表示以字节为单位从stream中读取或往stream中写入信息 以字节为导向的stream包括下面几种类型 ) input stream ) ByteArrayInputStream 把内存中的一个缓冲区作为InputStream使用 ) StringBufferInputStream 把一个String对象作为InputStream ) FileInputStream 把一个文件作为InputStream 实现对文件的读取操作 ) PipedInputStream 实现了pipe的概念 主要在线程中使用 ) SequenceInputStream 把多个InputStream合并为一个InputStream ) Out stream ) ByteArrayOutputStream 把信息存入内存中的一个缓冲区中 ) FileOutputStream 把信息存入文件中 ) PipedOutputStream 实现了pipe的概念 主要在线程中使用 ) SequenceOutputStream 把多个OutStream合并为一个OutStream 以Unicode字符为导向的stream 以Unicode字符为导向的stream 表示以Unicode字符为单位从stream中读取或往stream中写入信息 以Unicode字符为导向的stream包括下面几种类型 ) Input Stream ) CharArrayReader 与ByteArrayInputStream对应 ) StringReader 与StringBufferInputStream对应 ) FileReader 与FileInputStream对应 ) PipedReader 与PipedInputStream对应 ) Out Stream ) CharArrayWrite 与ByteArrayOutputStream对应 ) StringWrite 无与之对应的以字节为导向的stream ) FileWrite 与FileOutputStream对应 ) PipedWrite 与PipedOutputStream对应 以字符为导向的stream基本上对有与之相对应的以字节为导向的stream 两个对应类实现的功能相同 字是在操作时的导向不同 如CharArrayReader 和ByteArrayInputStream的作用都是把内存中的一个缓冲区作为InputStream使用 所不同的是前者每次从内存中读取一个字节的信息 而后者每次从内存中读取一个字符 两种不现导向的stream之间的转换 InputStreamReader和OutputStreamReader 把一个以字节为导向的stream转换成一个以字符为导向的stream stream添加属性 为stream添加属性 的作用 运用上面介绍的Java中操作IO的API 我们就可完成我们想完成的任何操作了 但通过FilterInputStream和FilterOutStream的子类 我们可以为stream添加属性 下面以一个例子来说明这种功能的作用 如果我们要往一个文件中写入数据 我们可以这样操作 FileOutStream fs = new FileOutStream( test txt ); 然后就可以通过产生的fs对象调用write()函数来往test txt文件中写入数据了 但是 如果我们想实现 先把要写入文件的数据先缓存到内存中 再把缓存中的数据写入文件中 的功能时 上面的API就没有一个能满足我们的需求了 但是通过FilterInputStream和FilterOutStream的子类 为FileOutStream添加我们所需要的功能 FilterInputStream的各种类型 用于封装以字节为导向的InputStream ) DataInputStream 从stream中读取基本类型(int char等)数据 ) BufferedInputStream 使用缓冲区 ) LineNumberInputStream 会记录input stream内的行数 然后可以调用getLineNumber()和setLineNumber(int) ) PushbackInputStream 很少用到 一般用于编译器开发 用于封装以字符为导向的InputStream ) 没有与DataInputStream对应的类 除非在要使用readLine()时改用BufferedReader 否则使用DataInputStream ) BufferedReader 与BufferedInputStream对应 ) LineNumberReader 与LineNumberInputStream对应 ) PushBackReader 与PushbackInputStream对应 FilterOutStream的各种类型 用于封装以字节为导向的OutputStream ) DataIOutStream 往stream中输出基本类型(int char等)数据 ) BufferedOutStream 使用缓冲区 ) PrintStream 产生格式化输出 用于封装以字符为导向的OutputStream ) BufferedWrite 与对应 ) PrintWrite 与对应 RandomAccessFile ) 可通过RandomAccessFile对象完成对文件的读写操作 ) 在产生一个对象时 可指明要打开的文件的性质 r 只读 w 只写 rw可读写 ) 可以直接跳到文件中指定的位置 I/O应用的一个例子 import java io *; public class TestIO public static void main(String[] args) throws IOException // 以行为单位从一个文件读取数据 BufferedReader in = new BufferedReader( new FileReader( F:\\\\nepalon\\\\TestIO java )); String s s = new String(); while((s = in readLine()) != null) s += s + \\n ; in close(); // b 接收键盘的输入 BufferedReader stdin = new BufferedReader( new InputStreamReader(System in)); System out println( Enter a line: ); System out println(stdin readLine()); // 从一个String对象中读取数据 StringReader in = new StringReader(s ); int c; while((c = in read()) != ) System out println((char)c); in close(); // 从内存取出格式化输入 try DataInputStream in = new DataInputStream( new ByteArrayInputStream(s getBytes())); while(true) System out println((char)in readByte()); catch(EOFException e) System out println( End of stream ); // 输出到文件 try BufferedReader in = new BufferedReader( new StringReader(s )); PrintWriter out = new PrintWriter( new BufferedWriter( new FileWriter( F:\\\\nepalon\\\\ TestIO out ))); int lineCount = ; while((s = in readLine()) != null) out println(lineCount++ + + s); out close(); in close(); catch(EOFException ex) System out println( End of stream ); // 数据的存储和恢复 try DataOutputStream out = new DataOutputStream( new BufferedOutputStream( new FileOutputStream( F:\\\\nepalon\\\\ Data txt ))); out writeDouble( ); out writeChars( \\nThas was pi:writeChars\\n ); out writeBytes( Thas was pi:writeByte\\n ); out close(); DataInputStream in = new DataInputStream( new BufferedInputStream( new FileInputStream( F:\\\\nepalon\\\\ Data txt ))); BufferedReader in br = new BufferedReader( new InputStreamReader(in )); System out println(in readDouble()); System out println(in br readLine()); System out println(in br readLine()); catch(EOFException e) System out println( End of stream ); // 通过RandomAccessFile操作文件 RandomAccessFile rf = new RandomAccessFile( F:\\\\nepalon\\\\ rtest dat rw ); for(int i= ; i < ; i++) rf writeDouble(i* ); rf close(); rf = new RandomAccessFile( F:\\\\nepalon\\\\ rtest dat r ); for(int i= ; i < ; i++) System out println( Value + i + + rf readDouble()); rf close(); rf = new RandomAccessFile( F:\\\\nepalon\\\\ rtest dat rw ); rf seek( * ); rf writeDouble( ); rf close(); rf = new RandomAccessFile( F:\\\\nepalon\\\\ rtest dat r ); for(int i= ; i < ; i++) System out println( Value + i + + rf readDouble()); rf close(); 关于代码的解释(以区为单位) 区中 当读取文件时 先把文件内容读到缓存中 当调用in readLine()时 再从缓存中以字符的方式读取数据(以下简称 缓存字节读取方式 ) b区中 由于想以缓存字节读取方式从标准IO(键盘)中读取数据 所以要先把标准IO(System in)转换成字符导向的stream 再进行BufferedReader封装 区中 要以字符的形式从一个String对象中读取数据 所以要产生一个StringReader类型的stream cha138/Article/program/Java/hx/201311/25748相关参考
Java的文件IO机制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java有一个庞大的I/O
java常用IO操作 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! packagesyjutil
知识大全 java序列化--java.io.Serializable接口解析
java序列化--java.io.Serializable接口解析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一
Java的IO总结 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 知识点一:四大等级结构 ja
publicclassReadSql publicstaticvoidreadsql(StringfilePath)throwsException Stringencoding=gbk; F
JavaNIO(异步IO)Socket通信例子 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! /
JavaIO之有缓冲的文本输入 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 输入就是Input
JAVAIO操作总结——节点流和处理流 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 按照流是否
DAS系统的调试内容主要有IO信号测试、事故追忆系统测试、报表及打印功能的测试、()等等方面组成。
DAS系统的调试内容主要有I/O信号测试、事故追忆系统测试、报表及打印功能的测试、()等等方面组成。A、信号采样速率的设置B、画面检查与修改C、系统性能与功能测试D、性能计算功能测试参考答案:ABD
DAS系统的调试内容主要有IO信号测试、事故追忆系统测试、报表及打印功能的测试、()等等方面组成。
DAS系统的调试内容主要有I/O信号测试、事故追忆系统测试、报表及打印功能的测试、()等等方面组成。A、信号采样速率的设置B、画面检查与修改C、系统性能与功能测试D、性能计算功能测试参考答案:ABD