字符输入流向字节输入流的转换

字节流 InputStream OutputStream

字符流 Reader  Writer

他们都是抽象类

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


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

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

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

Java代码

  1. FileInputStream fileInputStream = new FileInputStream("d:/text.txt");  // 定义一个指向D:/TEXT.TXT 的字节流   

  2.   

  3. InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);   

  4. //字节流转换成InputStreamReader   

  5.   

  6. BufferedReader bufferedReader = new BufferedReader(inputSteamReader);   

  7. //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代码

  1.   

  2. String ss = new String();   

  3. String s;   

  4. while((s = bufferedReader.readLine())!=null){   

  5.     ss += s;   

  6. }  

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


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

Java代码

  1.   

  2. FileOutputStream fileOutputStream = new FileOutputStream("d:/text.txt"); //定义一个   

  3.   

  4. 指向D:/TEXT.TXT文件    

  5.   

  6. OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);   

  7.   

  8. BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);   

  9.   

  10. bufferedWriter.write(s);   

  11.   

  12. bufferedWriter.close();   

  13. outputStreamWriter.close();   

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

 

字符输入流向字节输入流的转换

 

  1. import java.io.*;   

  2.   

  3.   

  4. public class InputStreamFromReader extends InputStream {   

  5.       

  6.     Reader reader;   

  7.       

  8.     String encoding=null;   

  9.       

  10.     byte[] buf=null;   

  11.       

  12.     int bufSize=0;   

  13.       

  14.     public InputStreamFromReader(Reader reader)   

  15.     {   

  16.         this.reader=reader;   

  17.     }   

  18.       

  19.     public InputStreamFromReader(Reader reader,String encoding)   

  20.     {   

  21.         this.reader=reader;   

  22.         this.encoding=encoding;   

  23.     }   

  24.     @Override  

  25.       

  26.     public int read() throws IOException {   

  27.         if(bufSize<1)//缓冲中无数据,填充缓冲数组   

  28.         {   

  29.             int ch=reader.read();//读取下一个字符   

  30.             if(ch==-1//结束   

  31.                 return -1;   

  32.             String temp=new String(new char[]{(char)ch});//构造字符串   

  33.             //根据编码获取字节数组,放在字节缓冲中   

  34.             if(this.encoding==null)   

  35.                 this.buf=temp.getBytes();   

  36.             else  

  37.                 this.buf=temp.getBytes(this.encoding);   

  38.             this.bufSize=this.buf.length;   

  39.         }   

  40.         //从缓冲中返回   

  41.         return buf[bufSize--]&0xff;   

  42.     }   

  43. }  

你可能感兴趣的:(字符输入流向字节输入流的转换)