CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

◆◆有以下问题,请大伙拉小弟一把!

楼主fengyang(流浪黄蜂者)2002-01-25 09:47:21 在 Java / J2SE / 基础类 提问

j2me中,用以下方法取得一文件的内容:  
  InputStream   eBookStream   =   getClass().getResourceAsStream("dao.book");  
  请问在eBookStream中的数据是什么形式的?如何知道其长度?  
  谢谢!  
   
   
  问题点数:30、回复次数:7Top

1 楼fengyang(流浪黄蜂者)回复于 2002-01-25 09:49:43 得分 0

没人?Top

2 楼blackcats(黑猫警长)回复于 2002-01-25 09:51:28 得分 2

我也是才学j2me  
  你能告诉我你的环境吗以及配置  
  谢谢  
  haizi97@hotmail.comTop

3 楼chenyuan_tongji(codeguru)回复于 2002-01-25 09:56:15 得分 7

是二进制流吧Top

4 楼skyyoung(路人甲)回复于 2002-01-25 10:00:01 得分 7

自己看看源代码  
  /*  
    *   @(#)InputStream.java 1.37   00/07/18  
    *  
    *   Copyright   1994-2000   Sun   Microsystems,   Inc.   All   Rights   Reserved.  
    *    
    *   This   software   is   the   proprietary   information   of   Sun   Microsystems,   Inc.      
    *   Use   is   subject   to   license   terms.  
    *    
    */  
   
  package   java.io;  
   
  /**  
    *   This   abstract   class   is   the   superclass   of   all   classes   representing  
    *   an   input   stream   of   bytes.  
    *  
    *   <p>   Applications   that   need   to   define   a   subclass   of   <code>InputStream</code>  
    *   must   always   provide   a   method   that   returns   the   next   byte   of   input.  
    *  
    *   @author     Arthur   van   Hoff  
    *   @version   1.37,   07/18/00  
    *   @see           java.io.BufferedInputStream  
    *   @see           java.io.ByteArrayInputStream  
    *   @see           java.io.DataInputStream  
    *   @see           java.io.FilterInputStream  
    *   @see           java.io.InputStream#read()  
    *   @see           java.io.OutputStream  
    *   @see           java.io.PushbackInputStream  
    *   @since       JDK1.0  
    */  
  public   abstract   class   InputStream   {  
   
          //   SKIP_BUFFER_SIZE   is   used   to   determine   the   size   of   skipBuffer  
          private   static   final   int   SKIP_BUFFER_SIZE   =   2048;  
          //   skipBuffer   is   initialized   in   skip(long),   if   needed.  
          private   static   byte[]   skipBuffer;  
   
          /**  
            *   Reads   the   next   byte   of   data   from   the   input   stream.   The   value   byte   is  
            *   returned   as   an   <code>int</code>   in   the   range   <code>0</code>   to  
            *   <code>255</code>.   If   no   byte   is   available   because   the   end   of   the   stream  
            *   has   been   reached,   the   value   <code>-1</code>   is   returned.   This   method  
            *   blocks   until   input   data   is   available,   the   end   of   the   stream   is   detected,  
            *   or   an   exception   is   thrown.  
            *  
            *   <p>   A   subclass   must   provide   an   implementation   of   this   method.  
            *  
            *   @return           the   next   byte   of   data,   or   <code>-1</code>   if   the   end   of   the  
            *                           stream   is   reached.  
            *   @exception     IOException     if   an   I/O   error   occurs.  
            */  
          public   abstract   int   read()   throws   IOException;  
   
          /**  
            *   Reads   some   number   of   bytes   from   the   input   stream   and   stores   them   into  
            *   the   buffer   array   <code>b</code>.   The   number   of   bytes   actually   read   is  
            *   returned   as   an   integer.     This   method   blocks   until   input   data   is  
            *   available,   end   of   file   is   detected,   or   an   exception   is   thrown.  
            *  
            *   <p>   If   <code>b</code>   is   <code>null</code>,   a  
            *   <code>NullPointerException</code>   is   thrown.     If   the   length   of  
            *   <code>b</code>   is   zero,   then   no   bytes   are   read   and   <code>0</code>   is  
            *   returned;   otherwise,   there   is   an   attempt   to   read   at   least   one   byte.   If  
            *   no   byte   is   available   because   the   stream   is   at   end   of   file,   the   value  
            *   <code>-1</code>   is   returned;   otherwise,   at   least   one   byte   is   read   and  
            *   stored   into   <code>b</code>.  
            *  
            *   <p>   The   first   byte   read   is   stored   into   element   <code>b[0]</code>,   the  
            *   next   one   into   <code>b[1]</code>,   and   so   on.   The   number   of   bytes   read   is,  
            *   at   most,   equal   to   the   length   of   <code>b</code>.   Let   <i>k</i>   be   the  
            *   number   of   bytes   actually   read;   these   bytes   will   be   stored   in   elements  
            *   <code>b[0]</code>   through   <code>b[</code><i>k</i><code>-1]</code>,  
            *   leaving   elements   <code>b[</code><i>k</i><code>]</code>   through  
            *   <code>b[b.length-1]</code>   unaffected.  
            *  
            *   <p>   If   the   first   byte   cannot   be   read   for   any   reason   other   than   end   of  
            *   file,   then   an   <code>IOException</code>   is   thrown.   In   particular,   an  
            *   <code>IOException</code>   is   thrown   if   the   input   stream   has   been   closed.  
            *  
            *   <p>   The   <code>read(b)</code>   method   for   class   <code>InputStream</code>  
            *   has   the   same   effect   as:   <pre><code>   read(b,   0,   b.length)   </code></pre>  
            *  
            *   @param             b       the   buffer   into   which   the   data   is   read.  
            *   @return           the   total   number   of   bytes   read   into   the   buffer,   or  
            *                           <code>-1</code>   is   there   is   no   more   data   because   the   end   of  
            *                           the   stream   has   been   reached.  
            *   @exception     IOException     if   an   I/O   error   occurs.  
            *   @see                 java.io.InputStream#read(byte[],   int,   int)  
            */  
          public   int   read(byte   b[])   throws   IOException   {  
  return   read(b,   0,   b.length);  
          }  
   
          /**  
            *   Reads   up   to   <code>len</code>   bytes   of   data   from   the   input   stream   into  
            *   an   array   of   bytes.     An   attempt   is   made   to   read   as   many   as  
            *   <code>len</code>   bytes,   but   a   smaller   number   may   be   read,   possibly  
            *   zero.   The   number   of   bytes   actually   read   is   returned   as   an   integer.  
            *  
            *   <p>   This   method   blocks   until   input   data   is   available,   end   of   file   is  
            *   detected,   or   an   exception   is   thrown.  
            *  
            *   <p>   If   <code>b</code>   is   <code>null</code>,   a  
            *   <code>NullPointerException</code>   is   thrown.  
            *  
            *   <p>   If   <code>off</code>   is   negative,   or   <code>len</code>   is   negative,   or  
            *   <code>off+len</code>   is   greater   than   the   length   of   the   array  
            *   <code>b</code>,   then   an   <code>IndexOutOfBoundsException</code>   is  
            *   thrown.  
            *  
            *   <p>   If   <code>len</code>   is   zero,   then   no   bytes   are   read   and  
            *   <code>0</code>   is   returned;   otherwise,   there   is   an   attempt   to   read   at  
            *   least   one   byte.   If   no   byte   is   available   because   the   stream   is   at   end   of  
            *   file,   the   value   <code>-1</code>   is   returned;   otherwise,   at   least   one  
            *   byte   is   read   and   stored   into   <code>b</code>.  
            *  
            *   <p>   The   first   byte   read   is   stored   into   element   <code>b[off]</code>,   the  
            *   next   one   into   <code>b[off+1]</code>,   and   so   on.   The   number   of   bytes   read  
            *   is,   at   most,   equal   to   <code>len</code>.   Let   <i>k</i>   be   the   number   of  
            *   bytes   actually   read;   these   bytes   will   be   stored   in   elements  
            *   <code>b[off]</code>   through   <code>b[off+</code><i>k</i><code>-1]</code>,  
            *   leaving   elements   <code>b[off+</code><i>k</i><code>]</code>   through  
            *   <code>b[off+len-1]</code>   unaffected.  
            *  
            *   <p>   In   every   case,   elements   <code>b[0]</code>   through  
            *   <code>b[off]</code>   and   elements   <code>b[off+len]</code>   through  
            *   <code>b[b.length-1]</code>   are   unaffected.  
            *  
            *   <p>   If   the   first   byte   cannot   be   read   for   any   reason   other   than   end   of  
            *   file,   then   an   <code>IOException</code>   is   thrown.   In   particular,   an  
            *   <code>IOException</code>   is   thrown   if   the   input   stream   has   been   closed.  
            *  
            *   <p>   The   <code>read(b,</code>   <code>off,</code>   <code>len)</code>   method  
            *   for   class   <code>InputStream</code>   simply   calls   the   method  
            *   <code>read()</code>   repeatedly.   If   the   first   such   call   results   in   an  
            *   <code>IOException</code>,   that   exception   is   returned   from   the   call   to  
            *   the   <code>read(b,</code>   <code>off,</code>   <code>len)</code>   method.     If  
            *   any   subsequent   call   to   <code>read()</code>   results   in   a  
            *   <code>IOException</code>,   the   exception   is   caught   and   treated   as   if   it  
            *   were   end   of   file;   the   bytes   read   up   to   that   point   are   stored   into  
            *   <code>b</code>   and   the   number   of   bytes   read   before   the   exception  
            *   occurred   is   returned.     Subclasses   are   encouraged   to   provide   a   more  
            *   efficient   implementation   of   this   method.  
            *  
            *   @param             b           the   buffer   into   which   the   data   is   read.  
            *   @param             off       the   start   offset   in   array   <code>b</code>  
            *                                       at   which   the   data   is   written.  
            *   @param             len       the   maximum   number   of   bytes   to   read.  
            *   @return           the   total   number   of   bytes   read   into   the   buffer,   or  
            *                           <code>-1</code>   if   there   is   no   more   data   because   the   end   of  
            *                           the   stream   has   been   reached.  
            *   @exception     IOException     if   an   I/O   error   occurs.  
            *   @see                 java.io.InputStream#read()  
            */  
          public   int   read(byte   b[],   int   off,   int   len)   throws   IOException   {  
  if   (b   ==   null)   {  
          throw   new   NullPointerException();  
  }   else   if   ((off   <   0)   ||   (off   >   b.length)   ||   (len   <   0)   ||  
        ((off   +   len)   >   b.length)   ||   ((off   +   len)   <   0))   {  
          throw   new   IndexOutOfBoundsException();  
  }   else   if   (len   ==   0)   {  
          return   0;  
  }  
   
  int   c   =   read();  
  if   (c   ==   -1)   {  
          return   -1;  
  }  
  b[off]   =   (byte)c;  
   
  int   i   =   1;  
  try   {  
          for   (;   i   <   len   ;   i++)   {  
  c   =   read();  
  if   (c   ==   -1)   {  
          break;  
  }  
  if   (b   !=   null)   {  
          b[off   +   i]   =   (byte)c;  
  }  
          }  
  }   catch   (IOException   ee)   {  
  }  
  return   i;  
          }  
   
          /**  
            *   Skips   over   and   discards   <code>n</code>   bytes   of   data   from   this   input  
            *   stream.   The   <code>skip</code>   method   may,   for   a   variety   of   reasons,   end  
            *   up   skipping   over   some   smaller   number   of   bytes,   possibly   <code>0</code>.  
            *   This   may   result   from   any   of   a   number   of   conditions;   reaching   end   of   file  
            *   before   <code>n</code>   bytes   have   been   skipped   is   only   one   possibility.  
            *   The   actual   number   of   bytes   skipped   is   returned.     If   <code>n</code>   is  
            *   negative,   no   bytes   are   skipped.  
            *  
            *   <p>   The   <code>skip</code>   method   of   <code>InputStream</code>   creates   a  
            *   byte   array   and   then   repeatedly   reads   into   it   until   <code>n</code>   bytes  
            *   have   been   read   or   the   end   of   the   stream   has   been   reached.   Subclasses   are  
            *   encouraged   to   provide   a   more   efficient   implementation   of   this   method.  
            *  
            *   @param             n       the   number   of   bytes   to   be   skipped.  
            *   @return           the   actual   number   of   bytes   skipped.  
            *   @exception     IOException     if   an   I/O   error   occurs.  
            */  
          public   long   skip(long   n)   throws   IOException   {  
   
  long   remaining   =   n;  
  int   nr;  
  if   (skipBuffer   ==   null)  
          skipBuffer   =   new   byte[SKIP_BUFFER_SIZE];  
   
  byte[]   localSkipBuffer   =   skipBuffer;  
   
  if   (n   <=   0)   {  
          return   0;  
  }  
   
  while   (remaining   >   0)   {  
          nr   =   read(localSkipBuffer,   0,  
              (int)   Math.min(SKIP_BUFFER_SIZE,   remaining));  
          if   (nr   <   0)   {  
  break;  
          }  
          remaining   -=   nr;  
  }  
   
  return   n   -   remaining;  
          }  
   
          /**  
            *   Returns   the   number   of   bytes   that   can   be   read   (or   skipped   over)   from  
            *   this   input   stream   without   blocking   by   the   next   caller   of   a   method   for  
            *   this   input   stream.     The   next   caller   might   be   the   same   thread   or   or  
            *   another   thread.  
            *  
            *   <p>   The   <code>available</code>   method   for   class   <code>InputStream</code>  
            *   always   returns   <code>0</code>.  
            *  
            *   <p>   This   method   should   be   overridden   by   subclasses.  
            *  
            *   @return           the   number   of   bytes   that   can   be   read   from   this   input   stream  
            *                           without   blocking.  
            *   @exception     IOException     if   an   I/O   error   occurs.  
            */  
          public   int   available()   throws   IOException   {  
  return   0;  
          }  
   
          /**  
            *   Closes   this   input   stream   and   releases   any   system   resources   associated  
            *   with   the   stream.  
            *  
            *   <p>   The   <code>close</code>   method   of   <code>InputStream</code>   does  
            *   nothing.  
            *  
            *   @exception     IOException     if   an   I/O   error   occurs.  
            */  
          public   void   close()   throws   IOException   {}  
   
          /**  
            *   Marks   the   current   position   in   this   input   stream.   A   subsequent   call   to  
            *   the   <code>reset</code>   method   repositions   this   stream   at   the   last   marked  
            *   position   so   that   subsequent   reads   re-read   the   same   bytes.  
            *  
            *   <p>   The   <code>readlimit</code>   arguments   tells   this   input   stream   to  
            *   allow   that   many   bytes   to   be   read   before   the   mark   position   gets  
            *   invalidated.  
            *  
            *   <p>   The   general   contract   of   <code>mark</code>   is   that,   if   the   method  
            *   <code>markSupported</code>   returns   <code>true</code>,   the   stream   somehow  
            *   remembers   all   the   bytes   read   after   the   call   to   <code>mark</code>   and  
            *   stands   ready   to   supply   those   same   bytes   again   if   and   whenever   the   method  
            *   <code>reset</code>   is   called.     However,   the   stream   is   not   required   to  
            *   remember   any   data   at   all   if   more   than   <code>readlimit</code>   bytes   are  
            *   read   from   the   stream   before   <code>reset</code>   is   called.  
            *  
            *   <p>   The   <code>mark</code>   method   of   <code>InputStream</code>   does  
            *   nothing.  
            *  
            *   @param       readlimit       the   maximum   limit   of   bytes   that   can   be   read   before  
            *                                             the   mark   position   becomes   invalid.  
            *   @see           java.io.InputStream#reset()  
            */  
          public   synchronized   void   mark(int   readlimit)   {}  
   
          /**  
            *   Repositions   this   stream   to   the   position   at   the   time   the  
            *   <code>mark</code>   method   was   last   called   on   this   input   stream.  
            *  
            *   <p>   The   general   contract   of   <code>reset</code>   is:  
            *  
            *   <p><ul>  
            *  
            *   <li>   If   the   method   <code>markSupported</code>   returns  
            *   <code>true</code>,   then:  
            *  
            *           <ul><li>   If   the   method   <code>mark</code>   has   not   been   called   since  
            *           the   stream   was   created,   or   the   number   of   bytes   read   from   the   stream  
            *           since   <code>mark</code>   was   last   called   is   larger   than   the   argument  
            *           to   <code>mark</code>   at   that   last   call,   then   an  
            *           <code>IOException</code>   might   be   thrown.  
            *  
            *           <li>   If   such   an   <code>IOException</code>   is   not   thrown,   then   the  
            *           stream   is   reset   to   a   state   such   that   all   the   bytes   read   since   the  
            *           most   recent   call   to   <code>mark</code>   (or   since   the   start   of   the  
            *           file,   if   <code>mark</code>   has   not   been   called)   will   be   resupplied  
            *           to   subsequent   callers   of   the   <code>read</code>   method,   followed   by  
            *           any   bytes   that   otherwise   would   have   been   the   next   input   data   as   of  
            *           the   time   of   the   call   to   <code>reset</code>.   </ul>  
            *  
            *   <li>   If   the   method   <code>markSupported</code>   returns  
            *   <code>false</code>,   then:  
            *  
            *           <ul><li>   The   call   to   <code>reset</code>   may   throw   an  
            *           <code>IOException</code>.  
            *  
            *           <li>   If   an   <code>IOException</code>   is   not   thrown,   then   the   stream  
            *           is   reset   to   a   fixed   state   that   depends   on   the   particular   type   of   the  
            *           input   stream   and   how   it   was   created.   The   bytes   that   will   be   supplied  
            *           to   subsequent   callers   of   the   <code>read</code>   method   depend   on   the  
            *           particular   type   of   the   input   stream.   </ul></ul>  
            *  
            *   <p>   The   method   <code>reset</code>   for   class   <code>InputStream</code>  
            *   does   nothing   and   always   throws   an   <code>IOException</code>.  
            *  
            *   @exception     IOException     if   this   stream   has   not   been   marked   or   if   the  
            *                               mark   has   been   invalidated.  
            *   @see           java.io.InputStream#mark(int)  
            *   @see           java.io.IOException  
            */  
          public   synchronized   void   reset()   throws   IOException   {  
  throw   new   IOException("mark/reset   not   supported");  
          }  
   
          /**  
            *   Tests   if   this   input   stream   supports   the   <code>mark</code>   and  
            *   <code>reset</code>   methods.   Whether   or   not   <code>mark</code>   and  
            *   <code>reset</code>   are   supported   is   an   invariant   property   of   a  
            *   particular   input   stream   instance.   The   <code>markSupported</code>   method  
            *   of   <code>InputStream</code>   returns   <code>false</code>.  
            *  
            *   @return     <code>true</code>   if   this   stream   instance   supports   the   mark  
            *                     and   reset   methods;   <code>false</code>   otherwise.  
            *   @see           java.io.InputStream#mark(int)  
            *   @see           java.io.InputStream#reset()  
            */  
          public   boolean   markSupported()   {  
  return   false;  
          }  
   
  }  
  Top

5 楼oldcat0076(jeff)回复于 2002-01-25 10:27:44 得分 7

InputStream是从输入流读取字节类的基抽象类。  
  他的长度你可以通过read(byte[])取得,read(byte[])返回长度,必须注意的是你定义的byte[]要足够大,大于或等于InputStream的长度;  
  或者用skip(long)也可以,long一样要>=InputStream的长度。Top

6 楼pengji(彭乃超)回复于 2002-01-25 11:16:35 得分 7

流(stream)形式  
  InputStreamReadermy_Read=new   InputStreamReader(eBookStream);  
  int   how_much=my_Read.read(char[]   cbuf);  
  how_much就是长度!   Top

7 楼pengji(彭乃超)回复于 2002-01-25 11:29:24 得分 0

不好意思,没看清楚!错了.错了!应该是:  
  流(stream)形式  
  int   how_much=eBookStream.read(char[]   cbuf);  
  how_much就是长度!   Top

相关问题

  • ASP无阻上传写成细过程的问题,就10分了,大伙拉一把吧。
  • 关于string的疑惑。。。。。。。。。。大伙帮我一把吧
  • 关于string的疑惑。。。。。。。。。。大伙帮我一把吧!
  • 大伙进来支持一把吧,一个挺全的代码库
  • 请教大伙
  • 大伙帮帮忙!!!
  • 大伙帮忙呀!
  • 大伙来解梦!
  • 大伙新年好!
  • 大伙试一下....

关键词

  • j2me
  • inputstream
  • stream
  • read
  • ioexception
  • thrown
  • mark
  • skipbuffer
  • skip
  • byte

得分解答快速导航

  • 帖主:fengyang
  • blackcats
  • chenyuan_tongji
  • skyyoung
  • oldcat0076
  • pengji

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo