知识大全 彻底明白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机制

Java的文件IO机制  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java有一个庞大的I/O

知识大全 java 常用IO操作

java常用IO操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  packagesyjutil

知识大全 java序列化--java.io.Serializable接口解析

java序列化--java.io.Serializable接口解析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一

知识大全 Java的IO总结

Java的IO总结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  知识点一:四大等级结构  ja

知识大全 java io读取文本文件

  publicclassReadSql  publicstaticvoidreadsql(StringfilePath)throwsException  Stringencoding=gbk;  F

知识大全 Java NIO(异步IO)Socket通信例子

JavaNIO(异步IO)Socket通信例子  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  /

知识大全 Java IO之有缓冲的文本输入

JavaIO之有缓冲的文本输入  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  输入就是Input

知识大全 JAVA IO操作总结——节点流和处理流

JAVAIO操作总结——节点流和处理流  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  按照流是否

DAS系统的调试内容主要有IO信号测试、事故追忆系统测试、报表及打印功能的测试、()等等方面组成。

DAS系统的调试内容主要有I/O信号测试、事故追忆系统测试、报表及打印功能的测试、()等等方面组成。A、信号采样速率的设置B、画面检查与修改C、系统性能与功能测试D、性能计算功能测试参考答案:ABD

DAS系统的调试内容主要有IO信号测试、事故追忆系统测试、报表及打印功能的测试、()等等方面组成。

DAS系统的调试内容主要有I/O信号测试、事故追忆系统测试、报表及打印功能的测试、()等等方面组成。A、信号采样速率的设置B、画面检查与修改C、系统性能与功能测试D、性能计算功能测试参考答案:ABD