1. 如何使用Java 输出,输出流读写数据.pdf
Java.io是大多数面向数据流的输入/输出类的主要软件包。这个软件包包含了两个抽象类,InputStream和OutputStream。
所有其它面象数据流的输入/输出类都要扩展这两个基类。 java.io软件包提供了一些类和接口,它们在由InputStream和OuputStream类提供的读写操作的顶端定义了一些有用的抽象。
2. java 数据流的readInt()怎么判断是否读到了文件尾
一般RAF和字节流用int read()读取文件,一次只能读取一个int值的低八位,当读到文件末尾时可以用-1表示,int readInt(),一次读取4个字节,用-1已经不能表示文件末尾了,因为用4个字节可以表示-1,所以用readInt读到文件末尾时,会直接抛异常,即EOFException(end of file),文件到达末尾异常
3. Java数据流。。。
你要看清楚,已经是很清晰的代码了!!!
◇◇◇字节流——InputStream,OutputStream◇◇◇
“流”就像一根管道
字节流表示管道中只能通过“字节数据”
InputStream 字节输入流:从InputStream派生出去可以创建“字节数据输入流对象”的所有类,如FileInputStream,BufferedInputStream(发动机),ByteArray+InputStream,Data+InputStream,Object+InputStream
都继承了“读取字节read()”方法,都能读取磁盘文件
OutputStream字节输出流:从OutputStream派生出去可以创建“字节数据输出流对象”的所有类,如FileOutputStream,BufferedOutputStream(发动机),ByteArray+OutputStream,Data+OutputStream,Object+OutputStream
都继承了“写入字节write()”方法,都能写入磁盘文件
◇◇◇字符流——Reader,Writer◇◇◇
“流”就像一根管道
字符流表示管道中只能通过“字符数据”
Reader 字符输入流:从Reader派生出去可以创建“字符数据输入流对象”的所有类,如FileReader,BufferedReader(发动机),CharArrayReader,String+Reader,InputStreamReader
都继承了“读取字符read()”方法,都能读取磁盘文件
Writer 字符输出流:从Writer派生出去可以创建“字符数据输出流对象”的所有类,如FileWriter,BufferedWriter(发动机),CharArrayWriter,StringWriter,OutputStreamWriter
都继承了“写入字符write()”方法,都能写入磁盘文件◎FileOutputStream 字节输出流写文件◎
字节数据:byte 定义的变量就是字节数据
FileOutputStream就是写“字节数据”到文件中的类(只能写入“字节数据”,如果不是“字节数据”就需要转换getBytes()方法转换成字节数据)
public class Maintest
{
public static void main(String[] args)
{
FileOutputStream fos=null;
try
{
fos=new FileOutputStream("G:\\a.txt");
byte word=65; //byte定义的word变量是字节数据,可以直接写入
fos.write(word);
String str="早上好啊"; //String定义的是字符数据,要用getBytes()转换成字节数据,再用byte定义变量接收
byte[] words=str.getBytes();
fos.write(words);
System.out.println("写入成功!");
fos.close();
}
catch(IOException e)
{
}
}
}
◎FileWriter 字符输出流写文件◎
FileWriter有write()方法,写入字符数据到输出流文件中但效率不高,一般只用于打开路径,而“用BufferedWriter来写入”,BufferedWriter bw=new BufferedWriter(fw)“缓冲高效写入字符输出流文件”的类
public class Maintest
{
public static void main(String[]args)
{
FileWriter fw=null;
try
{
fw=new FileWriter("G:\\a.txt");
BufferedWriter bw=new BufferedWriter(fw);
String str="写入的是字符,可以直接写入"; //FileWriter写入的是字符数据,就是不用getbytes()转换成字节数据了
bw.write(str);
System.out.println("写入成功");
bw.close();
}
catch(IOException e)
{
}
}
}
至于FileInputStream和FileReader也是这样相对而言的,就像FileOutputSteam和FileWriter一样你边对比边理解就能看懂了
4. JAVA中的“流”一般用在什么地方
一般用在数据的读写(读取和写入)操作中
5. java字节输入流读取数据的过程是怎么样的
FileInputStream类的:int read() 从此输入流中读取一个数据字节
文件1.txt中的每个“1”为一个字符对应一个字节,则读取的是字符'1',其对应的int型为49,则输出为49
要想输出1.txt中的内容,可参考以下程序:
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
/**
*
* @author top
*/
public class Fin {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception {
// TODO code application logic here
FileInputStream fis = new FileInputStream("D:/1.txt");
InputStreamReader ir = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(ir);
String s;
while ((s=br.readLine())!=null) {
System.out.println(s);
s=br.readLine();
}
}
}
6. 如何使用Java 输出,输出流读写数据
在“面向对象编程: J a v a c o l l e c t i o n 更有效管理 e l e m e n t s ”一文中,我们讨论了 J a v a 集合类架构中的类和功能并介绍了它的排序功能。在本文中,我们将学习 J a v a 平台 提供的这些 I / O 类,接口和操作。让我们先从了解 J a v a 数据流开始。数据流 J a v a 所有的 I / O 机制都是基于数据流的,这些数据流表示了字符或者字节数据的流动序列。 J a v a 的 I / O 流提供了读写数据的标准方法。任何 J a v a 中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。 J a v a . i o 是大多数面向数据流的输入 / 输出类的主要软件包。这个软件包包含了两个抽象类, I n p u t S t r e a m 和 O u t p u t S t r e a m 。所有其它面象数据流的输入 / 输出类都要扩展这两个基类。 j a v a . i o 软件包提供了一些类和接口,它们在由 I n p u t S t r e a m 和 O u p u t S t r e a m 类提供的读写操作的顶端定义了一些有用的抽象。例如, O b j e c t I n p u t S t r e a m 类提供了让你把输入 / 输出流中的数据当成对象来读取的方法,而 O b j e c t O u t p u t S t r e a m 类提供了让你能够把 J a v a 对象写入数据流中的方法。优化读写过程 J D K 1 . 1 增加了一套读写类,它们提供了比现有数据流类更有用的抽象和更好的输入 / 输出性能。例如, B u f f e r e d R e a d e r 和 B u f f e r e d W r i t e r 类被用来从基于字符的输入和输出流中读取和写入文本。 B u f f e r d R e a d e r 类缓存字符以更高效的读取字符串,数组和文本行。 B u f f e r e d W r i t e r 类缓存字符以更高效的写入字符串,数组和文本行。 B u f f e r e d R e a d e r 和 B u f f e r e d W r i t e r 类可以按需求进行设置。 浪曦网 - 国内顶级 I T 视频网络编程教育平台 W w w . L a n g S i n . C o m 浪曦网 - 国内顶级 I T 视频网络编程教育平台 W w w . L a n g S i n . C o m J a v a 输入 / 输出架构提供的读取器和写入器类包括 L i n e N u m b e r R e a d e r 类, C h a r A r r a y R e a d e r 类, F i l e R e a d e r 类, F i l t e r R e a d e r 类, P u s h b a c k R e a d e r 类, P i p e d R e a d e r 类, S t r i n g R e a d e r 类以及其它一些类。这些类是在 I n p u t S t r e a m 和 O u p u t S t r e a m 类顶部的包裹类因此提供了与 I n p u t S t r e a m 和 O u p u t S t r e a m 类相似的方法。但是,这些类为读写特定的对象,比方文件,字符数组和字符串等等提供了更高效而有用的抽象。读取数据当你从一个相应的数据源对象里提取输入流或者是创建一个读取器对象的时候就会自动打开一个输入流。例如,要为一个文件打开输入流,我们只需要以下面的方式把文件名传递给 J a v a . i o . F i l e R e a d e r 对象的构造函数: j a v a . i o . F i l e R e a d e r f i l e R e a d e r = n e w j a v a . i o . F i l e R e a d e r ( " / h o m e / m e / m y f i l e . t x t " ) ; 要按顺序读取 F i l e R e a d e r 底层的输入流中的一个字节数据,只需要使用不带参数的 r e a d 方法。表 A 中的代码段从一个文件读取文本数据,一次一个字符,然后把它写入 S y s t e m . o u t 里。要从输入流读取指定数目的字节数据到 c h a r 数组里,只需要使用带一个 c h a r [ ] 参数的 r e a d 方法 。数组的长度被用来确定应该读取的字符的个数。表 B 演示了这个技术。要关闭一个输入流以及这个流使用的所有系统资源,你只需要以下面的方式调用 c l o s e 方法: f i l e R e a d e r . c l o s e ( ) ; 写入数据象一个输入流一样,输出流通常在你从相应的数据源提取它或者是在你创建一个写入对象的时候被自动的打开。例如,要为一个文件打开输出流,我们把文件的名字传递给 j a v a . i o . F i l e W r i t e r 对象的构造函数,如下所示: j a v a . i o . F i l e W r i t e r f i l e W r i t e r = n e w 浪曦网 - 国内顶级 I T 视频网络编程教育平台 W w w . L a n g S i n . C o m 浪曦网 - 国内顶级 I T 视频网络编程教育平台 W w w . L a n g S i n . C o m j a v a . i o . F i l e W r i t e r ( " / h o m e / m e / o u t . t x t " ) ; 要将一个特定的字符写入到输出流中,可以使用带一个 i n t 参数的 w r i t e 方法, i n t 参数代表要定入的字符。 i n t a C h a r = ( i n t ) " X " ; f i l e W r i t e r . w r i t e ( a C h a r ) ; 要在输出流给定的偏移地址写入一个 c h a r 数组中特定数目的字符,你可以使用带一个 c h a r [ ] 参数,一个 i n t 偏移量参数和一个 i n t 长度参数的 w r i t e 方法,如下面的例子所示: f i l e W r i t e r . w r i t e ( b u f f e r , 0 , b y t e C o u n t ) ; 要关闭一个输出流并释放所有与之相关的系统资源,可以使用 c l o s e 方法,就象这样: f i l e W r i t e r . c l o s e ( ) ; 要强迫写出一个输出流中的所有数据,可以使用下面的 f l u s h 方法: f i l e W r i t e r . f l u s h ( ) ; 把它们全部综合起来我们可以使用我们学习过的这些函数从一个文件中读取数据并同时写到另一个文件中去,如表 C 所示。 浪曦网 - 国内顶级 I T 视频网络编程教育平台 W w w . L a n g S i n . C o m 浪曦网 - 国内顶级 I T 视频网络编程教育平台 W w w . L a n g S i n . C o m 总结 J a v a 的输入 / 输出机制为从不同的数据源读取和写入字符增加了一套简单而标准化的 A P I 。你对一种数据源使用 J a v a 流的经验能够让你容易的使用其它由 J a v a 提供的数据源类型。在我们下一篇文章中,我们将会开始学习 J a v a 平台的联网和远程通讯架构。我们将会把我们对 J a v a 流的讨论扩展到这些环境并演示如何打开远程数据源,并象操作本地数据源,比方文件一样,写入数据和读取数据 J a v a 输入 / 输出( I / O )机制提供了一套简单的,标准化的 A P I 以便从不同的数据源读取和写入字符和字节数据。在“面向对象编程: J a v a c o l l e c t i o n 更有效管理 e l e m e n t s ”一文中,我们讨论了 J a v a 集合类架构中的类和功能并介绍了它的排序功能。在本文中,我们将学习 J a v a 平台提供的这些 I / O 类,接口和操作。让我们先从了解 J a v a 数据流开始。数据流 J a v a 所有的 I / O 机制都是基于数据流的,这些数据流表示了字符或者字节数据的流动序列。 J a v a 的 I / O 流提供了读写数据的标准方法。任何 J a v a 中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。 J a v a . i o 是大多数面向数据流的输入 / 输出类的主要软件包。这个软件包包含了两个抽象类, I n p u t S t r e a m 和 O u t p u t S t r e a m 。所有其它面象数据流的输入 / 输出类都要扩展这两个基类。 j a v a . i o 软件包提供了一些类和接口,它们在由 I n p u t S t r e a m 和 O u p u t S t r e a m 类提供的读写操作的顶端定义了一些有用的抽象。例如, O b j e c t I n p u t S t r e a m 类提供了让你把输入 / 输出流中的数据当成对象来读取的方法,而 O b j e c t O u t p u t S t r e a m 类提供了让你能够把 J a v a 对象写入数据流中的方法。优化读写过程 J D K 1 . 1 增加了一套读写类,它们提供了比现有数据流类更有用的抽象和更好的输入 / 输出性能。例如, B u f f e r e d R e a d e r 和 B u f f e r e d W r i t e r 类被用来从基于字符的输入和输出流中读取和写入文本。 B u f f e r d R e a d e r 类缓存字符以更高效的读取字符串,数组和文本行。 B u f f e r e d W r i t e r 类缓存字符以更高效的写入字符串,数组和文本行。 B u f f e r e d R e a d e r 和 B u f f e r e d W r i t e r 类可以按需求进行设置。 J a v a 输入 / 输出架构提供的读取器和写入器类包括 L i n e N u m b e r R e a d e r 类, C h a r A r r a y R e a d e r 类, F i l e R e a d e r 类, F i l t e r R e a d e r 类, P u s h b a c k R e a d e r 类, P i p e d R e a d e r 类, S t r i n g R e a d e r 类以及其它一些类。这些类是在 I n p u t S t r e a m 和 O u p u t S t r e a m 类顶部的包裹类因此提供了与 I n p u t S t r e a m 和 O u p u t S t r e a m 类相似的方法。但是,这些类为读写特定的对象,比方文件,字符数组和字符串等等提供了更高效而有用的抽象。读取数据当你从一个相应的数据源对象里提取输入流或者是创建一个读取器对象的时候就会自动打开一个输入流。例如,要为一个文件打开输入流,我们只需要以下面的方式把文件名传递给 J a v a . i o . F i l e R e a d e r 对象的构造函数: j a v a . i o . F i l e R e a d e r f i l e R e a d e r = n e w j a v a . i o . F i l e R e a d e r ( " / h o m e / m e / m y f i l e . t x t " ) ; 要按顺序读取 F i l e R e a d e r 底层的输入流中的一个字节数据,只需要使用不带参数的 r e a d 方法。表 A 中的代码段从一个文件读取文本数据,一次一个字符,然后把它写入 S y s t e m . o u t 里。要从输入流读取指定数目的字节数据到 c h a r 数组里,只需要使用带一个 c h a r [ ] 参数的 r e a d 方法。数组的长度被用来确定应该读取的字符的个数。表 B 演示了这个技术。要关闭一个输入流以及这个流使用的所有系统资源,你只需要以下面的方式调用 c l o s e 方法: f i l e R e a d e r . c l o s e ( ) ; 写入 数据象一个输入流一样,输出流通常在你从相应的数据源提取它或者是在你创建一个写入对象的时候被自动的打开。例如,要为一个文件打开输出流,我们把文件的名字传递给 j a v a . i o . F i l e W r i t e r 对象的构造函数,如下所示: j a v a . i o . F i l e W r i t e r f i l e W r i t e r = n e w j a v a . i o . F i l e W r i t e r ( " / h o m e / m e / o u t . t x t " ) ; 要将一个特定的字符写入到输出流中,可以使用带一个 i n t 浪曦网 - 国内顶级 I T 视频网络编程教育平台 W w w . L a n g S i n . C o m 浪曦网 - 国内顶级 I T 视频网络编程教育平台 W w w . L a n g S i n . C o m 参数的 w r i t e 方法, i n t 参数代表要定入的字符。 i n t a C h a r = ( i n t ) " X " ; f i l e W r i t e r . w r i t e ( a C h a r ) ; 要在 输出流给定的偏移地址写入一个 c h a r 数组中特定数目的字符,你可以使用带一个 c h a r [ ] 参数,一个 i n t 偏移量参数和一个 i n t 长度参数的 w r i t e 方法,如下面的例子所示: f i l e W r i t e r . w r i t e ( b u f f e r , 0 , b y t e C o u n t ) ; 要关闭一个输出流并释放所有与之相关的系统资源,可以使用 c l o s e 方法,就象这样: f i l e W r i t e r . c l o s e ( ) ; 要强迫写出一个输出流中的所有数据,可以使用下面的 f l u s h 方法: f i l e W r i t e r . f l u s h ( ) ; 把它们全部综合起来我们可以使用我们学习过的这些函数从一个文件中读取数据并同时写到另一个文件中去,如表 C 所示。总结 J a v a 的输入 / 输出机制为从不同的数据源读取和写入字符增加了一套简单而标准化的 A P I 。你对一种数据源使用 J a v a 流的经验能够让你容易的使用其它由 J a v a 提供的数据源类型。在我们下一篇文章中,我们将会开始学习 J a v a 平台 的联网和远程通讯架构。我们将会把我们对 J a v a 流的讨论扩展到这些环境并演示如何打开远程数据源,并象操作本地数据源,比方文件一样,写入数据和读取数据
7. 如何使用Java 输出/输出流进行读写数据
在“面向对象编程:Java collection更有效管理elements”一文中,我们讨论了Java 集合类架构中的类和功能并介绍了它的排序功能。在本文中,我们将学习Java 平台提供的这些I/O类,接口和操作。让我们先从了解Java 数据流开始。 数据流 Java所有的I/O机制都是基于数据流的,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。 Java.io是大多数面向数据流的输入/输出类的主要软件包。这个软件包包含了两个抽象类,InputStream和OutputStream。所有其它面象数据流的输入/输出类都要扩展这两个基类。 java.io软件包提供了一些类和接口,它们在由InputStream和OuputStream类提供的读写操作的顶端定义了一些有用的抽象。例如,ObjectInputStream类提供了让你把输入/输出流中的数据当成对象来读取的方法,而ObjectOutputStream类提供了让你能够把Java对象写入数据流中的方法。 优化读写过程 JDK 1.1 增加了一套读写类,它们提供了比现有数据流类更有用的抽象和更好的输入/输出性能。例如,BufferedReader和BufferedWriter 类被用来从基于字符的输入和输出流中读取和写入文本。BufferdReader 类缓存字符以更高效的读取字符串,数组和文本行。BufferedWriter类缓存字符以更高效的写入字符串,数组和文本行。BufferedReader和BufferedWriter 类可以按需求进行设置。 Java输入/输出架构提供的读取器和写入器类包括 LineNumberReader 类,CharArrayReader类,FileReader类,FilterReader类,PushbackReader类,PipedReader类,StringReader类以及其它一些类。这些类是在InputStream和OuputStream类顶部的包裹类因此提供了与InputStream和OuputStream类相似的方法。但是,这些类为读写特定的对象,比方文件,字符数组和字符串等等提供了更高效而有用的抽象。 读取数据 当你从一个相应的数据源对象里提取输入流或者是创建一个读取器对象的时候就会自动打开一个输入流。例如,要为一个文件打开输入流,我们只需要以下面的方式把文件名传递给Java.io.FileReader对象的构造函数: java.io.FileReader fileReader = new java.io.FileReader("/home/me/myfile.txt".net/forum/images/smiles/icon_wink.gif border=0>; 要按顺序读取FileReader底层的输入流中的一个字节数据,只需要使用不带参数的read方法。表A中的代码段从一个文件读取文本数据,一次一个字符,然后把它写入System.out里。 要从输入流读取指定数目的字节数据到char数组里,只需要使用带一个char[]参数的read方法。数组的长度被用来确定应该读取的字符的个数。表B演示了这个技术。 要关闭一个输入流以及这个流使用的所有系统资源,你只需要以下面的方式调用close方法: fileReader.close(); 写入数据 象一个输入流一样,输出流通常在你从相应的数据源提取它或者是在你创建一个写入对象的时候被自动的打开。例如,要为一个文件打开输出流,我们把文件的名字传递给java.io.FileWriter对象的构造函数,如下所示: java.io.FileWriter fileWriter = new java.io.FileWriter("/home/me/out.txt".net/forum/images/smiles/icon_wink.gif border=0>; 要将一个特定的字符写入到输出流中,可以使用带一个int参数的write方法,int参数代表要定入的字符。 int aChar = (int)'X'; fileWriter.write(aChar); 要在输出流给定的偏移地址写入一个char数组中特定数目的字符,你可以使用带一个char[]参数,一个int 偏移量参数和一个int长度参数的write方法,如下面的例子所示: fileWriter.write(buffer, 0, byteCount); 要关闭一个输出流并释放所有与之相关的系统资源,可以使用close方法,就象这样: fileWriter.close(); 要强迫写出一个输出流中的所有数据,可以使用下面的flush方法: fileWriter.flush(); 把它们全部综合起来 我们可以使用我们学习过的这些函数从一个文件中读取数据并同时写到另一个文件中去,如表C所示。 总结Java的输入/输出机制为从不同的数据源读取和写入字符增加了一套简单而标准化的API。你对一种数据源使用Java流的经验能够让你容易的使用其它由Java提供的数据源类型。 在我们下一篇文章中,我们将会开始学习Java平台的联网和远程通讯架构。我们将会把我们对Java流的讨论扩展到这些环境并演示如何打开远程数据源,并象操作本地数据源,比方文件一样,写入数据和读取数据
8. java中的“流”是什么
流是个抽象的概念,是对输入输出设备的抽象,java程序中,对于数据的输入/输出操作都是以“流”的方式进行。设备可以是文件,网络,内存等。
流具有方向性,至于是输入流还是输出流则是一个相对的概念,一般以程序为参考,如果数据的流向是程序至设备,我们成为输出流,反之我们称为输入流。
可以将流想象成一个“水流管道”,水流就在这管道中形成了,自然就出现了方向的概念。
当程序需要从某个数据源读入数据的时候,就会开启一个输入流,数据源可以是文件、内存或网络等等。相反地,需要写出数据到某个数据源目的地的时候,也会开启一个输出流,这个数据源目的地也可以是文件、内存或网络等等。
可以从不同的角度对流进行分类:
1.
处理的数据单位不同,可分为:字符流,字节流
2.数据流方向不同,可分为:输入流,输出流
3.功能不同,可分为:节点流,处理流
1.
和
2.
都比较好理解,对于根据功能分类的,可以这么理解:
节点流:节点流从一个特定的数据源读写数据。即节点流是直接操作文件,网络等的流,例如fileinputstream和fileoutputstream,他们直接从文件中读取或往文件中写入字节流。
处理流:“连接”在已存在的流(节点流或处理流)之上通过对数据的处理为程序提供更为强大的读写功能。过滤流是
使用一个已经存在的输入流或输出流连接创建的,过滤流就是对节点流进行一系列的包装。例如bufferedinputstream和
bufferedoutputstream,使用已经存在的节点流来构造,提供带缓冲的读写,提高了读写的效率,以及datainputstream和
dataoutputstream,使用已经存在的节点流来构造,提供了读写java中的基本数据类型的功能。他们都属于过滤流。
来源:
http://www.cnblogs.com/shitouer/archive/2012/12/19/2823641.html
9. java输入流中的数据流读自哪里将写到哪里
输出流:从内存读取并写到文件中去
输入流:从文件读到内存中
10. java中的流是什么
流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以“流”的方式进行。设备可以是文件,网络,内存等。
流具有方向性,至于是输入流还是输出流则是一个相对的概念,一般以程序为参考,如果数据的流向是程序至设备,我们成为输出流,反之我们称为输入流。
可以将流想象成一个“水流管道”,水流就在这管道中形成了,自然就出现了方向的概念。
当程序需要从某个数据源读入数据的时候,就会开启一个输入流,数据源可以是文件、内存或网络等等。相反地,需要写出数据到某个数据源目的地的时候,也会开启一个输出流,这个数据源目的地也可以是文件、内存或网络等等。
可以从不同的角度对流进行分类:
1. 处理的数据单位不同,可分为:字符流,字节流
2.数据流方向不同,可分为:输入流,输出流
3.功能不同,可分为:节点流,处理流
1. 和 2. 都比较好理解,对于根据功能分类的,可以这么理解:
节点流:节点流从一个特定的数据源读写数据。即节点流是直接操作文件,网络等的流,例如FileInputStream和FileOutputStream,他们直接从文件中读取或往文件中写入字节流。
处理流:“连接”在已存在的流(节点流或处理流)之上通过对数据的处理为程序提供更为强大的读写功能。过滤流是
使用一个已经存在的输入流或输出流连接创建的,过滤流就是对节点流进行一系列的包装。例如BufferedInputStream和
BufferedOutputStream,使用已经存在的节点流来构造,提供带缓冲的读写,提高了读写的效率,以及DataInputStream和
DataOutputStream,使用已经存在的节点流来构造,提供了读写Java中的基本数据类型的功能。他们都属于过滤流。
来源:
http://www.cnblogs.com/shitouer/archive/2012/12/19/2823641.html