OutputStream/InputStream是字节流,Writer/Reader是字符流,那为什么非要用OutputStreamWriter来包装字节流呢,如果觉得字节流的api不好用,为什么不直接用字符流呢
javaä¸OutputStreamWriteråWriterçåºå«è¿æInputStreamReaderä¸Readerçåºå«å¦ä¸ï¼
1.OutputStreamWriterè´è´£è¿è¡InputStreamå°Readerçéé åç±OutputStreamå°Writerçéé ã ReaderãWriteræ¯ç¨æ¥å¤ç16ä½å çæµã
Readeræ¯æ16ä½çUnicodeå符è¾åºï¼InputStreamæ¯æ8ä½çå符è¾åºã
ReaderåInputStreamåå«æ¯I/Oåºæä¾ç两å¥å¹³è¡ç¬ç«çç级æºæï¼
InputStreamãOutputStreamæ¯ç¨æ¥å¤ç8ä½å çæµï¼
2.java.io.Reader å java.io.InputStream ç»æäº Javaè¾å ¥ç±»ãReader ç¨äºè¯»å ¥16ä½å符ï¼ä¹å°±æ¯ Unicodeç¼ç çå符ï¼è InputStream ç¨äºè¯»å ¥ ASCIIå符åäºè¿å¶æ°æ®ãå¨ Javaä¸ï¼æä¸åç±»åç Reader è¾å ¥æµå¯¹åºäºä¸åçæ°æ®æºï¼
FileReader ç¨äºä»æ件è¾å ¥ï¼
CharArrayReader ç¨äºä»ç¨åºä¸çå符æ°ç»è¾å ¥ï¼
StringReader ç¨äºä»ç¨åºä¸çå符串è¾å ¥ï¼
PipedReader ç¨äºè¯»åä»å¦ä¸ä¸ªçº¿ç¨ä¸ç PipedWriter åå ¥ç®¡éçæ°æ®ã
ç¸åºçä¹æä¸åç±»åç InputStream è¾å ¥æµå¯¹åºäºä¸åçæ°æ®æºï¼FileInputStreamï¼ByteArrayInputStreamï¼StringBufferInputStreamï¼PipedInputStreamãå¦å¤ï¼è¿æ两ç§æ²¡æå¯¹åº Reader ç±»åç InputStream è¾å ¥æµ
1.OutputStreamWriterè´è´£è¿è¡InputStreamå°Readerçéé åç±OutputStreamå°Writerçéé ã ReaderãWriteræ¯ç¨æ¥å¤ç16ä½å çæµã
Readeræ¯æ16ä½çUnicodeå符è¾åºï¼InputStreamæ¯æ8ä½çå符è¾åºã
ReaderåInputStreamåå«æ¯I/Oåºæä¾ç两å¥å¹³è¡ç¬ç«çç级æºæï¼
InputStreamãOutputStreamæ¯ç¨æ¥å¤ç8ä½å çæµï¼
2.java.io.Reader å java.io.InputStream ç»æäº Javaè¾å ¥ç±»ãReader ç¨äºè¯»å ¥16ä½å符ï¼ä¹å°±æ¯ Unicodeç¼ç çå符ï¼è InputStream ç¨äºè¯»å ¥ ASCIIå符åäºè¿å¶æ°æ®ãå¨ Javaä¸ï¼æä¸åç±»åç Reader è¾å ¥æµå¯¹åºäºä¸åçæ°æ®æºï¼
FileReader ç¨äºä»æ件è¾å ¥ï¼
CharArrayReader ç¨äºä»ç¨åºä¸çå符æ°ç»è¾å ¥ï¼
StringReader ç¨äºä»ç¨åºä¸çå符串è¾å ¥ï¼
PipedReader ç¨äºè¯»åä»å¦ä¸ä¸ªçº¿ç¨ä¸ç PipedWriter åå ¥ç®¡éçæ°æ®ã
ç¸åºçä¹æä¸åç±»åç InputStream è¾å ¥æµå¯¹åºäºä¸åçæ°æ®æºï¼FileInputStreamï¼ByteArrayInputStreamï¼StringBufferInputStreamï¼PipedInputStreamãå¦å¤ï¼è¿æ两ç§æ²¡æå¯¹åº Reader ç±»åç InputStream è¾å ¥æµ
温馨提示:答案为网友推荐,仅供参考
第1个回答 推荐于2018-03-20
为了速度。
Writer会一个字节一个字节的把内容写入文件,如果你有丰富编程经验的话,就会知道这种速度会多么慢。而outputstreamwriter是带有缓存的,用它包装了writer之后,writer就不会直接往文件中写,而是交给outputstreamwriter,然后就会往缓存中写,待Writer操作完成,OutputStreamWriter再一次性写入文件,效率大大提升。本回答被提问者和网友采纳
Writer会一个字节一个字节的把内容写入文件,如果你有丰富编程经验的话,就会知道这种速度会多么慢。而outputstreamwriter是带有缓存的,用它包装了writer之后,writer就不会直接往文件中写,而是交给outputstreamwriter,然后就会往缓存中写,待Writer操作完成,OutputStreamWriter再一次性写入文件,效率大大提升。本回答被提问者和网友采纳
第2个回答 2010-09-26
一般二进制文件需要写字节流,文本文件需要写字符流。