`
duan1823a
  • 浏览: 89331 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA 的两种流 字节流 InputStream OutputStream 字符流 Reader Writer

阅读更多
IO分两种流 

字节流 InputStream OutputStream 

字符流 Reader  Writer 

他们都是抽象类 

具体实现 
字节流 FileInputStream  FileOutputStream 
字符流 FileReader    FileWriter 


字节流转换成字符流可以用 InputSteamReader  OutputStreamWriter 

转换成BufferdReader  BufferedWriter 他们具有缓冲区 

例如:读取文件 从字节流输入到字符流输入 
定义一个字节流: 
Java代码
FileInputStream fileInputStream = new FileInputStream("d:/text.txt");  // 定义一个指向D:/TEXT.TXT 的字节流   
   
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);   
//字节流转换成InputStreamReader   
   
BufferedReader bufferedReader = new BufferedReader(inputSteamReader);   
//InputStreamReader 转换成带缓存的bufferedReader   

FileInputStream fileInputStream = new FileInputStream("d:/text.txt");  // 定义一个指向D:/TEXT.TXT 的字节流  InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream); //字节流转换成InputStreamReader  BufferedReader bufferedReader = new BufferedReader(inputSteamReader); //InputStreamReader 转换成带缓存的bufferedReader


可以把读出来的内容赋值给字符 
Java代码
String ss = new String();   
String s;   
while((s = bufferedReader.readLine())!=null){   
    ss += s;   
}   

String ss = new String(); String s; while((s = bufferedReader.readLine())!=null){  ss += s; }

例如:写入文件  从字节流输出到字符流输出 
Java代码
FileOutputStream fileOutputStream = new FileOutputStream("d:/text.txt"); //定义一个   
   
指向D:/TEXT.TXT文件    
   
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);   
   
BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);   
   
bufferedWriter.write(s);   
   
bufferedWriter.close();   
outputStreamWriter.close();   
fileOutputStream.close();  


------------------------------------------------------------
字节流和字符流      如果数据流中最小的数据单元是字节,那么称这种流为字节流;如果数据流中最小的数据单元是字符,那么称这种流为字符流。在Java的IO系统 中,java.io.InputStream和java.io.OutputStream分别表示字节输入流和字节输出流,java.io.Reader 和java.io.Writer分别表示字符输入流和字符输出流。I/O流的层次
1.字节流:
从InputStream和OutputStream派生出来的一系列类。这类流以字节(byte)为基本处理单位。
◇ InputStream、OutputStream
◇ FileInputStream、FileOutputStream
◇ PipedInputStream、PipedOutputStream
◇ ByteArrayInputStream、ByteArrayOutputStream
◇ FilterInputStream、FilterOutputStream
◇ DataInputStream、DataOutputStream
◇ BufferedInputStream、BufferedOutputStream
2.字符流:
从Reader和Writer派生出的一系列类,这类流以16位的Unicode码表示的字符为基本处理单位。
◇ Reader、Writer
◇ InputStreamReader、OutputStreamWriter
◇ FileReader、FileWriter
◇ CharArrayReader、CharArrayWriter
◇ PipedReader、PipedWriter
◇ FilterReader、FilterWriter
◇ BufferedReader、BufferedWriter
◇ StringReader、StringWriter
3.对象流
◇ ObjectInputStream、ObjectOutputStream
4.其它
◇ 文件处理:
File、RandomAccessFile;
◇ 接口
DataInput、DataOutput、ObjectInput、ObjectOutput----------------------------------------------------------------------------------------

IO分两种流 

字节流 InputStream OutputStream 

字符流 Reader Writer 

他们都是抽象类 

具体实现 
字节流 FileInputStream FileOutputStream 
字符流 FileReader FileWriter  

       字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节, 操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是 音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点.
所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列.
字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。

 

字节流转换成字符流可以用 InputSteamReader OutputStreamWriter 

转换成BufferdReader BufferedWriter 他们具有缓冲区 

例如:读取文件 从字节流输入到字符流输入 
定义一个字节流:

Java代码 <embed height="15" width="14" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" allowscriptaccess="always" quality="high" flashvars="clipboard=FileInputStream%20fileInputStream%20%3D%20new%20FileInputStream(%22d%3A%2Ftext.txt%22)%3B%0A%2F%2F%20%E5%AE%9A%E4%B9%89%E4%B8%80%E4%B8%AA%E6%8C%87%E5%90%91D%3A%2FTEXT.TXT%20%E7%9A%84%E5%AD%97%E8%8A%82%E6%B5%81%20%0A%0AInputStreamReader%20inputStreamReader%20%3D%20new%20InputStreamReader(fileInputStream)%3B%20%0A%2F%2F%E5%AD%97%E8%8A%82%E6%B5%81%E8%BD%AC%E6%8D%A2%E6%88%90InputStreamReader%20%0A%0ABufferedReader%20bufferedReader%20%3D%20new%20BufferedReader(inputSteamReader)%3B%20%0A%2F%2FInputStreamReader%20%E8%BD%AC%E6%8D%A2%E6%88%90%E5%B8%A6%E7%BC%93%E5%AD%98%E7%9A%84bufferedReader%0A%0A%E5%8F%AF%E4%BB%A5%E6%8A%8A%E8%AF%BB%E5%87%BA%E6%9D%A5%E7%9A%84%E5%86%85%E5%AE%B9%E8%B5%8B%E5%80%BC%E7%BB%99%E5%AD%97%E7%AC%A6%20%0AString%20ss%20%3D%20new%20String()%3B%20%0AString%20s%3B%20%0Awhile((s%20%3D%20bufferedReader.readLine())!%3Dnull)%7B%20%0A%20%20%20%20%20%20%20%20ss%20%2B%3D%20s%3B%20%0A%7D%20" src="http://suan2046.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf">
FileInputStream fileInputStream = new FileInputStream("d:/text.txt");   
// 定义一个指向D:/TEXT.TXT 的字节流    
   
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);    
//字节流转换成InputStreamReader    
   
BufferedReader bufferedReader = new BufferedReader(inputSteamReader);    
//InputStreamReader 转换成带缓存的bufferedReader   
   
可以把读出来的内容赋值给字符    
String ss = new String();    
String s;    
while((s = bufferedReader.readLine())!=null){    
        ss += s;    
}    

FileInputStream fileInputStream = new FileInputStream("d:/text.txt"); // 定义一个指向D:/TEXT.TXT 的字节流   InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);  //字节流转换成InputStreamReader   BufferedReader bufferedReader = new BufferedReader(inputSteamReader);  //InputStreamReader 转换成带缓存的bufferedReader  可以把读出来的内容赋值给字符  String ss = new String();  String s;  while((s = bufferedReader.readLine())!=null){          ss += s;  }

例如:写入文件 从字节流输出到字符流输出

Java代码 
FileOutputStream fileOutputStream = new FileOutputStream("d:/text.txt");   
   
//定义一个指向D:/TEXT.TXT文件   
   
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);   
   
BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);   
   
bufferedWriter.write(s);   
   
bufferedWriter.close();   
outputStreamWriter.close();   
fileOutputStream.close();    

FileOutputStream fileOutputStream = new FileOutputStream("d:/text.txt");  //定义一个指向D:/TEXT.TXT文件  OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);  BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);  bufferedWriter.write(s);  bufferedWriter.close(); outputStreamWriter.close(); fileOutputStream.close();



例程:
将字符串转化为字节流 #region  将字符串转化为字节流 
           /**/ ///   <summary> 
          ///  将字符串转化为字节流
          ///   </summary> 
          ///   <param name="_Source"> 字串 </param> 
          ///   <returns> 字节流 </returns> 
          public   static   byte [] String2Bytes( string  strSource)
            {
             System.IO.MemoryStream   memoryStream = new    System.IO.MemoryStream();   
             System.IO.BinaryWriter   binaryWriter = new    System.IO.BinaryWriter(memoryStream);   
             binaryWriter.Write( strSource );
              byte []   buffer = memoryStream.GetBuffer();
              return  buffer;    
         } 
          #endregion 
 
         
           将字节流转化为字符串 #region  将字节流转化为字符串 
           /**/ ///   <summary> 
          ///  将字节流转化为字符串
          ///   </summary> 
          ///   <param name="bytData"> 字节流 </param> 
          ///   <returns> 字串 </returns> 
          public   static   string  Bytes2String( byte [] bytData)
            {
              // 字节流->字符串    
             System.IO.MemoryStream   memoryStream2  =   new    System.IO.MemoryStream(bytData);   
             System.IO.BinaryReader   binaryReader  =   new    System.IO.BinaryReader(memoryStream2);   
              string    s2 = binaryReader.ReadString();   
              return  s2;
         } 
          #endregion 

FileOutputStream fileOutputStream = new FileOutputStream("d:/text.txt"); //定义一个  指向D:/TEXT.TXT文件   OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);  BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);  bufferedWriter.write(s);  bufferedWriter.close(); outputStreamWriter.close(); fileOutputStream.close();
 

分享到:
评论
1 楼 cydiaone 2012-11-26  
不错喔,虽然经常用,但就是分不清谁是谁。

相关推荐

    理解Java中字符流与字节流的区别

    1. 什么是流 ...Java中基本的两个字节流类是InputStream和OutputStream,它们分别代表了组基本的输入字节流和输出字节流。InputStream类与OutputStream类均为抽象类,我们在实际使用中通常使用Java类库中提

    JAVA IO流缓冲字节流缓冲字符流等流经典代码示例加注释总结.rar

    2、常用21个IO流:FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader、PrintWriter、BufferedReader、InputStream、...

    JAVA IO流技术

    字节流:按照字节读取数据(InputStream、OutputStream) 字符流:按照字符读取数据(Reader、Writer) 功能不同: 节点流:可以直接从数据源或目的地读写数据。 处理流:不直接连接到数据源或目的地,是处理流的流...

    Java字符流和字节流对文件操作的区别

    本篇文章主要介绍了Java的IO流分为字符流(Reader,Writer)和字节流(InputStream,OutputStream),字节流顾名思义字节流就是将文件的内容读取到字节数组,对初学者很有用,有需要的朋友可以了解一下。

    ioliu.rar_IO流 java_Java Reader Writer_java IO_stream

    * io流 运用 * 注意:只要子类 包含以下类名字的,就是该... * InputStream----- 输入字节流 * Reader-------- 输入字符流 * OutputStream-----输出字节流 * Writer --------输出字符流

    Java IO 体系.md

    - 字节流与字符流的转换 - 新潮的 NIO - 缓冲区(Buffer) - 通道(Channel) - 示例:文件拷贝案例 - BIO 和 NIO 拷贝文件的区别 - 操作系统的零拷贝 - 选择器(Selectors) - 选择键(SelectionKey) - ...

    Java 基础核心总结 +经典算法大全.rar

    字节流对象InputStream OutputStream 字符流对象Reader Writer 字节流与字符流的转换新潮的 NIO 缓冲区(Buffer)通道(Channel) 示例:文件拷贝案例 BIO 和 NIO 拷贝文件的区别操作系统的零拷贝 选择器(Selectors) 选择...

    Java中IO流知识点总结

     字节流:InputStream OutputStream  字符流:Reader Writer  二、流功能分析  读取流是从输入设备或数据对象中读取数据到程序,用程序进行处理读入的数据,写出流是把程序处理的数据输出到  输出设备上...

    字节流和字符流

    在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream,在字符流中输出主要是使用Writer类完成,输入流主要使用Reader类完成。(这四个都是抽象类)java中提供了专用于输入输出功能的包Java.io,...

    Java之IO流学习总结

    这两个流对象是字符体系中的成员,它们有转换作用,本身又是字符流,所以在构造的时候需要传入字节流对象进来。 8.File类 File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想来操作文件和...

    基础深化和提高-IO流技术学习大全

    I/O流主要分为两种类型:字节流和字符流。 字节流: 字节输入流(InputStream)和字节输出流(OutputStream):用于处理二进制数据,以字节为单位进行读写。常见的实现类包括FileInputStream、FileOutputStream等...

    字节流字符流练习

    字节流与字符流的练习文档,内附一个简要的记事本综合文档。

    java io图解

    java io流总结,包括字符流,字节流,很详细。inputStream outputStream

    Java 中IO流分为哪几种? BIO、NIO、AIO有什么区别?

    Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四个):InputStream,OutputStream,Reader,Writer。Java中其他多种多样变化的流均是由它们派生出来...

    j致java开发学习前的一段讲话

    java io流代码 字节流的两个顶层父类: 1,InputStream 2,OutputStream. 字符流的两个顶层父类: 1,Reader 2,Writer

    java中的标准输入输出流

    本文档涵盖了java中标准输入输出流,包含InputStream、OutputStream字节流还有字符流以及对文件的读写操作等

    Java IO期末复习||五类一接口

    Java IO五类一接口 文件操作类File、...字节输出流OutputStream、字节输入流InputStream 字符输出流Writer、字符输入流Reader 打印流、输入输出重定向 Scanner类 字符编码 序列化操作标识接口Serialiable

    IO流各个类的使用方法

    【字节流】 InputStream OutputStream FileInputStream FileOutputStream DataInputStream DataOutputStream BufferedInputStream BufferedOutputStream ObjectInputStream ObjectOutputStream ByteArrayInputStream...

    Java基础知识

    总结了java中的基础知识,十分全面,适合初学者使用 java是通过流的方式再输入输出设备中传递 按照操作数据的不同可以分为字节流和字符流 按照数据传输方向的不同可以分为输入流和...字符流------输入Reader /Writer

Global site tag (gtag.js) - Google Analytics