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();  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章