当前位置:首页 » 多媒体相关

新手求助,我的文件写到32k大小,就再也写不进去了~~~~~~~~~~~``


写文件时的代码是如下函数:  
   
  synchronized     public   int   settelsendstate(string   stel,   int   state,   int   type)   {  
          //   state   1   send   ok,   2   send   fail,   3   sending  
          tellog   srtn   =   (tellog)   (htelsended.get(stel));  
          if   (srtn   !=   null)   {   //   found   in   hashtable,   remove   first  
              htelsended.remove(stel);  
          }  
          srtn   =   new   tellog(stel,   state,   0);  
          srtn.setstate(state);  
   
          htelsended.put(stel,   srtn);   //   insert   to   hashtable  
          if   (type   ==   1)   {  
              return   1;  
          }  
          fileoutputstream   fos   =   null;  
          bufferedwriter   logwriter   =   null;  
          try   {  
              fos   =   new   fileoutputstream(stellogfn,   true);  
              byte[]   b   =   srtn.getallstring().getbytes();  
                    //synchronized   (fos)   {  
                        fos.write(b);  
                        fos.close();  
                    //}  
              return   1;  
          }  
          catch   (exception   e)   {  
              e.printstacktrace();  
              return   -2;  
          }  
      }  
  }  
   
  调用此函数前还有一个打开文件,使用如下函数。打开文件取得数据后,就是不停调用上面的函数一直写,  
   
    private   void   loadsendedtel()   {//load   all   tel   send   state   //remove   old   state   with   file   tel   state  
          debugout.println("load   sended   tel   from   :"   +   stellogfn);  
   
          fileinputstream   fis   =   null;  
          bufferedreader   logreader   =   null;  
          int   lenf   =   0;  
          byte[]   b;  
          try   {  
              file   f   =   new   file(stellogfn);  
              if   (!f.exists())   {  
                  return;  
              }  
              fis   =   new   fileinputstream(stellogfn);  
              lenf   =   (int)   (f.length());  
              debugout.println(stellogfn   +   "   lenth:"   +   lenf);  
              b   =   new   byte[lenf];  
              int   nread   =   fis.read(b,   0,   lenf);  
              debugout.println(stellogfn   +   "   got:"   +   nread);  
              fis.close();  
          }  
          catch   (exception   e)   {  
              e.printstacktrace();  
              return;  
          }  
          int   i   =   0;  
          while   (i   +   29   <   lenf)   {  
              string   stemp   =   new   string(b,   i,   29);  
              tellog   tl   =   new   tellog(stemp);  
              debugout.println("ppgrequest:   sendedtel"   +   stemp);  
              htelsended.remove(tl.tel);   //   remove   old   first  
              htelsended.put(tl.tel,   tl);   //   user   tel   as   key  
              i   +=   29;  
          }  
   
      }  
   
  不知道怎么回事写到32160个字节时就写不下去了,但是如果退出程序再启动再重新打开这个文件(32k的,以前初始打开时是0k的),则又可以写了,但也只能写到64k大小又写不下去了,各位帮我看看怎么回事?非常感谢!!

推荐阅读

  • 经典被甩卖 承启5200 256MB只卖3XX元 [详细内容]
  • 请教改装E608座充的有关高手 [详细内容]
  • 希捷推出世界第一款消费电子产品专用硬盘 [详细内容]
  • 希捷重推笔记本硬盘 国内合作伙伴7月揭开 [详细内容]
  • 6200TC翻身仗 双敏DDR2版256MB售499 [详细内容]
  • 希捷将开发2.5英寸硬盘平台 锁定企业用户 [详细内容]
  • 英特尔索尼统一影音文件规范 以方便下载 [详细内容]
  • 网友回答:
    网友:shine333

    你应该做一个缓冲,读一些(比如4k),写一些,再读再写,否则一个2g的东西你也想一下子写下去吗?  
       
     

    网友:javahui

    结贴给分吧。

    .

    讨论区

    Login