`
duan1823a
  • 浏览: 90818 次
  • 性别: 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 文件存储 Inputstream outputstream reader writer的用法

    `InputStream`、`OutputStream`、`Reader`和`Writer`是Java IO流的基础类,它们提供了读写文件的基本接口。本篇文章将深入讲解这些类的用法,并提供实际的代码示例,帮助初学者更好地理解和应用。 1. `InputStream`...

    JAVA 字符流与字节流

    在Java编程语言中,输入/输出(I/O)操作是处理数据流的关键部分,而字符流与字节流则是实现这些操作的两种基本方式。理解它们的区别和应用场景对于任何Java开发者来说都是至关重要的。 ### 字节流 字节流是最基本...

    Java字符流和字节流

    在Java中,所有字节流类都是`java.io.InputStream`或`java.io.OutputStream`的子类。这两个类提供了基本的读写操作方法,例如`read()`和`write()`。 **1. 文件输出流(FileOutputStream)** - `FileOutputStream`类...

    Java IO 字节流 字符流

    字符流是基于Unicode编码的,它包括Reader和Writer两大类,分别用于读取和写入字符。Reader是所有字符输入流的基类,如 FileReader,它可以从文件读取字符;而Writer是所有字符输出流的基类,如 FileWriter,用于向...

    将输出流OutputStream转化为输入流InputStream的方法

    在Java编程中,有时我们可能需要将一个已经写入数据的`OutputStream`转换为`InputStream`,以便重新读取这些数据。这种情况通常出现在临时存储或处理数据时,例如在网络传输或者存储到内存中的场景。本篇文章将深入...

    IO流文档InputStream / OutputStream

    IO流是Java中的一种基本的数据交换方式,通过InputStream和OutputStream可以实现数据的读取和写入,而Reader和Writer可以实现字符流的读取和写入。IO流的知识点很多,需要认真学习和掌握。 InputStream的类型: * ...

    Java字节流与字符流的介绍.pdf

    Java 字节流与字符流的介绍 Java 中的流操作可以分为两种:字节流和字符流。字节流是指以 byte 为单位进行读写操作的流...Java 的流操作分为字节流和字符流两种,字节流是最基本的,字符流是为了处理字符而提出来的。

    Java IO字符流和字节流

    Java的IO体系主要包括两大类:字节流和字符流。本文将详细介绍这两者之间的区别以及如何在实际开发中使用它们。 #### 二、字节流和字符流的概念 ##### 1. 字节流 字节流是处理字节的数据流,它是最基础的数据流...

    java字节流和字符流

    Java中的字节流和字符流是IO操作中的两种基本类型,它们主要用于数据的输入和输出。字节流处理的数据单位是字节,而字符流处理的是Unicode字符。 字节流: 字节流主要由两个核心类构成:`InputStream`和`...

    字节流字符流练习

    Java提供了两种主要的IO流类型:字节流(Byte Stream)和字符流(Character Stream)。这两个概念是Java IO体系的基础,也是程序员在处理数据传输时经常遇到的工具。本练习文档将帮助你深入理解并熟练掌握这两种流的...

    java字节流和字符流[整理].pdf

    转换流:在字节流和字符流之间,Java提供了解决两者不兼容问题的转换流,即InputStreamReader和OutputStreamWriter。InputStreamReader是字节输入流到字符输入流的桥梁,而OutputStreamWriter则是字节输出流到字符...

    字节流字符流

    字符流则包括Reader和Writer两个基类,用于处理文本数据。由于文本数据通常基于特定的字符编码,如ASCII、UTF-8或GBK,字符流在传输时会进行编码和解码,以确保数据的正确性。例如, FileReader和FileWriter是用于...

    Java基础11-(字节流、字符流)

    字节流主要包括OutputStream和InputStream两个基类,它们分别是所有字节输出流和输入流的超类。字符流则包括Writer和Reader两个基类,用于实现字符数据的读写。 通过OutputStream类,我们可以将字节数据写入到文件...

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

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

    JavaIO实例_字节流_字符流_缓冲流_转换流IODemo

    在Java中,IO流分为两大类:字节流和字符流,每种流又有输入流和输出流之分,分别用于数据的读取和写入。 1. **字节流**: - 字节流处理的是8位的字节数据,是最基本的流类型。Java中的`InputStream`和`...

    JavaIO实例|字节流|字符流|缓冲流|转换流IODemo

    字符流由Reader和Writer类族构成,如InputStreamReader和OutputStreamWriter,它们分别用于将字节流转换为字符流。字符流在处理Unicode字符集时特别有用,因为它可以正确处理多种语言的字符编码。例如,使用 ...

    Java字节流 .pdf

    Java字节流是一种用于处理字节数据的流处理机制,在Java中,字节流不包含边界数据的连续流,字节流是由字节组成的,Java里字符由两个字节组成。字节流是最基本的,它是按字节来处理二进制数据。 字节流基类有:字节...

    Java 字节流、字符流题目.docx

    字符流则分为`Reader`和`Writer`两个基本类,它们分别代表字符输入流和字符输出流。字符流通常用于处理文本数据,例如读写文本文件。实验中,练习七要求使用`PrintWriter`(继承自`Writer`)将用户输入的信息写入...

    JAVA_字节流和字符流

    在Java编程语言中,字节流(Byte Stream)和字符流(Character Stream)是处理输入输出数据的两种基本方式。字节流主要用于处理任何类型的二进制数据,如图片、音频、视频等,而字符流则专为处理基于Unicode编码的...

Global site tag (gtag.js) - Google Analytics