Dedian  
          -- 關注搜索引擎的開發
          日歷
          <2006年8月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789
          統計
          • 隨筆 - 82
          • 文章 - 2
          • 評論 - 228
          • 引用 - 0

          導航

          常用鏈接

          留言簿(8)

          隨筆分類(45)

          隨筆檔案(82)

          文章檔案(2)

          Java Spaces

          搜索

          •  

          積分與排名

          • 積分 - 66098
          • 排名 - 813

          最新評論

          閱讀排行榜

          評論排行榜

           
          -- Scenario:
          ??? The purpose of a reader is to interpret a low-level byte stream (ByteArrayInputStream, StringInputStream, FileInputStream and so on) as a character stream and provid character input to whatever class needs it. And it is very simple to convert an inputstream to a reader:
          Reader reader = new InputStreamReader( in ); //in is an instance of class InputStream or derived classes
          But the issue is sometimes we need convert a reader to inputstream, think about following scenaros:
          1.? the original inputstream has been filtered by certian reader, now we need save back filtered content into database by inputstream: we can not use original inputstream but filtered stream which can only get from your reader.
          2.? Given a class who contains a reader to access a streaming content after complex parsering or downloading, we want to utilize the streaming content in this class while not repeating complex operations for content analysis, so we need employ some wrapper methods to get inputstream from reader.

          -- Solution:
          1. write own InputStream implementation, such as following:

          class MyInputStream extends InputStream
          {
          private Reader rd;
          public MyInputStream(Reader rd)
          {
          super();
          this.rd = rd;
          }
          ?
          ?
          // implement the read() method to make this all work
          publicint read()
          {
          int t = rd.read();
          // you can do your processing on the inputReader here
          // fiddle with the values and return
          return t;
          ?
          }
          }
          Note: Applications that need to define a subclass of InputStream must always provide a method that returns the next byte of input.
          (refer to http://java.sun.com/j2se/1.4.2/docs/api/java/io/InputStream.html)

          -- anything else? BTW, for parsering xml-based input stream by SAX, I am glad to see that the inputSource constructor can take either InputStream or Reader (refer to http://java.sun.com/j2se/1.4.2/docs/api/org/xml/sax/InputSource.html)


          posted on 2006-08-29 09:46 Dedian 閱讀(1345) 評論(0)  編輯  收藏 所屬分類: Java Glossary
           
          Copyright © Dedian Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 南安市| 盐源县| 那坡县| 邛崃市| 汾西县| 乐业县| 托里县| 吉安市| 海南省| 九龙县| 正宁县| 马公市| 奈曼旗| 宝清县| 南平市| 南康市| 调兵山市| 蓬莱市| 绍兴县| 南涧| 贡嘎县| 常德市| 沭阳县| 关岭| 汉阴县| 蒙阴县| 秦皇岛市| 阳城县| 永善县| 德保县| 克山县| 佛冈县| 庄河市| 六枝特区| 天全县| 泾川县| 荃湾区| 岢岚县| 偃师市| 隆安县| 盐亭县|