首页上的图形计数器为何会自动归零呢?

wumin2003 2004-08-31 10:51:54
我的系统是Apache+Tomcat,用JSP写了个图形计数器放在首页上。计数、显示都比较正常,但令人郁闷的是,每次计数值增加1000左右后计数文件中的值就会突然变为零,我只好手工修改计数文件中的数值了。一直找不到原因,请各位大虾多多指教,谢谢!
...全文
159 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dugang106 2004-08-31
是通过对文件的读写完成的吧?
有几个需要注意的地方:
1、同步问题:读文件时需要加上关键字:synchronized
2、读数时转化为long型,利用readline来读
其它的就看你程序是不是对了。
怎么会到1000就变成零呢?莫非你用的是byte类型?!
回复
laola 2004-08-31
对啊~这样的问题,不结合代码怎么给你解决啊~
回复
caiyi0903 2004-08-31
代码贴一些关键的出来看看!
回复
wumin2003 2004-08-31
原代码如下,请多指教:

<%@ page import="java.io.*" %>
<%@ page import="java.lang.*" %>
<%@ page contentType="text/html;charset=gb2312" %>

<% String readStr="";
int writeInt=1;
String countFile=application.getRealPath("counter/count");
BufferedReader file=new BufferedReader(new FileReader(countFile));

try
{readStr=file.readLine();}
catch (IOException e)
{System.out.println("读取计数文件出错!");}

if (readStr==null)
readStr="0";
else
writeInt=java.lang.Integer.parseInt(readStr)+1;

//判断cookie,刷新时不写入计数文件
if (request.getHeader("Cookie")==null)
{try
{PrintWriter pw=new PrintWriter(new FileOutputStream(countFile));
pw.println(writeInt);
pw.close();}
catch (IOException e)
{System.out.println(e.getMessage());}
}
else
{writeInt=java.lang.Integer.parseInt(readStr)-1;
readStr=java.lang.String.valueOf(writeInt);}

//把计数转化为图形,不足8位的前面补零
int i=0;
int k=8-readStr.length();
String szOut="";

for (i=0;i<k;i++) szOut=szOut+"<img src='counter/0.gif'>";
for (i=0;i<readStr.length();i++) szOut=szOut+"<img src='counter/"+readStr.charAt(i)+".gif'>";
%>

<table width="200" height="27" align="center" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center"><%out.print(szOut);%></td>
</tr>
</table>
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2004-08-31 10:51
社区公告
暂无公告