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

字节流 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.  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值