字节输入流和字符输入流

来源:互联网 发布:网络营销软件 编辑:程序博客网 时间:2024/05/20 21:12
字节流 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. InputStreamReader inputStreamReader new InputStreamReader(fileInputStream);   
  3. //字节流转换成InputStreamReader    
  4. BufferedReader bufferedReader new BufferedReader(inputSteamReader);   
  5. //InputStreamReader 转换成带缓存的bufferedReader  


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

例如:写入文件  从字节流输出到字符流输出
Java代码   
  1. FileOutputStream fileOutputStream new FileOutputStream("d:/text.txt"); //定义一个指向D:/TEXT.TXT文件      
  2. OutputStreamWriter outputStreamWriter new OutputStreamWriter(fileOutputStream);     
  3. BufferedWriter bufferedWriter new BufferedWriter(outputStreamWriter);     
  4. bufferedWriter.write(s);   
  5. bufferedWriter.close();   
  6. outputStreamWriter.close();   
  7. fileOutputStream.close();  
  1. import java.io.*;   
  2. public class InputStreamFromReader extends InputStream {     
  3.     Reader reader;       
  4.     String encoding=null;   
  5.       
  6.     byte[] buf=null;   
  7.       
  8.     int bufSize=0;   
  9.       
  10.     public InputStreamFromReader(Reader reader)   
  11.     {   
  12.         this.reader=reader;   
  13.     }   
  14.       
  15.     public InputStreamFromReader(Reader reader,String encoding)   
  16.     {   
  17.         this.reader=reader;   
  18.         this.encoding=encoding;   
  19.     }   
  20.     @Override  
  21.       
  22.     public int read() throws IOException {   
  23.         if(bufSize<1)//缓冲中无数据,填充缓冲数组   
  24.         {   
  25.             int ch=reader.read();//读取下一个字符   
  26.             if(ch==-1//结束   
  27.                 return -1;   
  28.             String temp=new String(new char[]{(char)ch});//构造字符串   
  29.             //根据编码获取字节数组,放在字节缓冲中   
  30.             if(this.encoding==null)   
  31.                 this.buf=temp.getBytes();   
  32.             else  
  33.                 this.buf=temp.getBytes(this.encoding);   
  34.             this.bufSize=this.buf.length;   
  35.         }   
  36.         //从缓冲中返回   
  37.         return buf[bufSize--]&0xff;   
  38.     }   
  39.  
0 0
原创粉丝点击