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


Java代码   收藏代码
  1. IO分两种流   
  2.   
  3. 字节流 InputStream OutputStream   
  4.   
  5. 字符流 Reader  Writer   
  6.   
  7. 他们都是抽象类   
  8.   
  9. 具体实现   
  10. 字节流 FileInputStream  FileOutputStream   
  11. 字符流 FileReader    FileWriter   
  12.   
  13.   
  14. 字节流转换成字符流可以用 InputSteamReader  OutputStreamWriter   
  15.   
  16. 转换成BufferdReader  BufferedWriter 他们具有缓冲区   
  17.   
  18. 例如:读取文件 从字节流输入到字符流输入   
  19. 定义一个字节流:   
  20. Java代码  
  21. FileInputStream fileInputStream = new FileInputStream("d:/text.txt");  // 定义一个指向D:/TEXT.TXT 的字节流     
  22.      
  23. InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);     
  24. //字节流转换成InputStreamReader     
  25.      
  26. BufferedReader bufferedReader = new BufferedReader(inputSteamReader);     
  27. //InputStreamReader 转换成带缓存的bufferedReader     
  28.   
  29. FileInputStream fileInputStream = new FileInputStream("d:/text.txt");  // 定义一个指向D:/TEXT.TXT 的字节流  InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream); //字节流转换成InputStreamReader  BufferedReader bufferedReader = new BufferedReader(inputSteamReader); //InputStreamReader 转换成带缓存的bufferedReader  
  30.   
  31.   
  32. 可以把读出来的内容赋值给字符   
  33. Java代码  
  34. String ss = new String();     
  35. String s;     
  36. while((s = bufferedReader.readLine())!=null){     
  37.     ss += s;     
  38. }     
  39.   
  40. String ss = new String(); String s; while((s = bufferedReader.readLine())!=null){  ss += s; }  
  41.   
  42. 例如:写入文件  从字节流输出到字符流输出   
  43. Java代码  
  44. FileOutputStream fileOutputStream = new FileOutputStream("d:/text.txt"); //定义一个     
  45.      
  46. 指向D:/TEXT.TXT文件      
  47.      
  48. OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);     
  49.      
  50. BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);     
  51.      
  52. bufferedWriter.write(s);     
  53.      
  54. bufferedWriter.close();     
  55. outputStreamWriter.close();     
  56. fileOutputStream.close();    
  57.   
  58.   
  59. ------------------------------------------------------------  
  60. 字节流和字符流      如果数据流中最小的数据单元是字节,那么称这种流为字节流;如果数据流中最小的数据单元是字符,那么称这种流为字符流。在Java的IO系统 中,java.io.InputStream和java.io.OutputStream分别表示字节输入流和字节输出流,java.io.Reader 和java.io.Writer分别表示字符输入流和字符输出流。I/O流的层次  
  61. 1.字节流:  
  62. 从InputStream和OutputStream派生出来的一系列类。这类流以字节(byte)为基本处理单位。  
  63. ◇ InputStream、OutputStream  
  64. ◇ FileInputStream、FileOutputStream  
  65. ◇ PipedInputStream、PipedOutputStream  
  66. ◇ ByteArrayInputStream、ByteArrayOutputStream  
  67. ◇ FilterInputStream、FilterOutputStream  
  68. ◇ DataInputStream、DataOutputStream  
  69. ◇ BufferedInputStream、BufferedOutputStream  
  70. 2.字符流:  
  71. 从Reader和Writer派生出的一系列类,这类流以16位的Unicode码表示的字符为基本处理单位。  
  72. ◇ Reader、Writer  
  73. ◇ InputStreamReader、OutputStreamWriter  
  74. ◇ FileReader、FileWriter  
  75. ◇ CharArrayReader、CharArrayWriter  
  76. ◇ PipedReader、PipedWriter  
  77. ◇ FilterReader、FilterWriter  
  78. ◇ BufferedReader、BufferedWriter  
  79. ◇ StringReader、StringWriter  
  80. 3.对象流  
  81. ◇ ObjectInputStream、ObjectOutputStream  
  82. 4.其它  
  83. ◇ 文件处理:  
  84. File、RandomAccessFile;  
  85. ◇ 接口  
  86. DataInput、DataOutput、ObjectInput、ObjectOutput----------------------------------------------------------------------------------------  
  87.   
  88. IO分两种流   
  89.   
  90. 字节流 InputStream OutputStream   
  91.   
  92. 字符流 Reader Writer   
  93.   
  94. 他们都是抽象类   
  95.   
  96. 具体实现   
  97. 字节流 FileInputStream FileOutputStream   
  98. 字符流 FileReader FileWriter    
  99.   
  100.        字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节, 操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是 音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点.  
  101. 所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列.  
  102. 字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。  
  103.   
  104.    
  105.   
  106. 字节流转换成字符流可以用 InputSteamReader OutputStreamWriter   
  107.   
  108. 转换成BufferdReader BufferedWriter 他们具有缓冲区   
  109.   
  110. 例如:读取文件 从字节流输入到字符流输入   
  111. 定义一个字节流:  
  112.   
  113. 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">  
  114. FileInputStream fileInputStream = new FileInputStream("d:/text.txt");     
  115. // 定义一个指向D:/TEXT.TXT 的字节流      
  116.      
  117. InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);      
  118. //字节流转换成InputStreamReader      
  119.      
  120. BufferedReader bufferedReader = new BufferedReader(inputSteamReader);      
  121. //InputStreamReader 转换成带缓存的bufferedReader     
  122.      
  123. 可以把读出来的内容赋值给字符      
  124. String ss = new String();      
  125. String s;      
  126. while((s = bufferedReader.readLine())!=null){      
  127.         ss += s;      
  128. }      
  129.   
  130. 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;  }  
  131.   
  132. 例如:写入文件 从字节流输出到字符流输出  
  133.   
  134. Java代码   
  135. FileOutputStream fileOutputStream = new FileOutputStream("d:/text.txt");     
  136.      
  137. //定义一个指向D:/TEXT.TXT文件     
  138.      
  139. OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);     
  140.      
  141. BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);     
  142.      
  143. bufferedWriter.write(s);     
  144.      
  145. bufferedWriter.close();     
  146. outputStreamWriter.close();     
  147. fileOutputStream.close();      
  148.   
  149. 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();  
  150.   
  151.   
  152.   
  153. 例程:  
  154. 将字符串转化为字节流 #region  将字符串转化为字节流   
  155.            /**/ ///   <summary>   
  156.           ///  将字符串转化为字节流  
  157.           ///   </summary>   
  158.           ///   <param name="_Source"> 字串 </param>   
  159.           ///   <returns> 字节流 </returns>   
  160.           public   static   byte [] String2Bytes( string  strSource)  
  161.             {  
  162.              System.IO.MemoryStream   memoryStream = new    System.IO.MemoryStream();     
  163.              System.IO.BinaryWriter   binaryWriter = new    System.IO.BinaryWriter(memoryStream);     
  164.              binaryWriter.Write( strSource );  
  165.               byte []   buffer = memoryStream.GetBuffer();  
  166.               return  buffer;      
  167.          }   
  168.           #endregion   
  169.    
  170.            
  171.            将字节流转化为字符串 #region  将字节流转化为字符串   
  172.            /**/ ///   <summary>   
  173.           ///  将字节流转化为字符串  
  174.           ///   </summary>   
  175.           ///   <param name="bytData"> 字节流 </param>   
  176.           ///   <returns> 字串 </returns>   
  177.           public   static   string  Bytes2String( byte [] bytData)  
  178.             {  
  179.               // 字节流->字符串      
  180.              System.IO.MemoryStream   memoryStream2  =   new    System.IO.MemoryStream(bytData);     
  181.              System.IO.BinaryReader   binaryReader  =   new    System.IO.BinaryReader(memoryStream2);     
  182.               string    s2 = binaryReader.ReadString();     
  183.               return  s2;  
  184.          }   
  185.           #endregion   
  186.   
  187. 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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值