文件读取问题

licdut 2004-10-05 11:12:02
服务器上有一个内容不断增加的文本文件,文件增加到100行左右会停止增加内容。现在需要写一个JSP程序每隔三秒读取一次文件(采用网页定时刷新的方式),但出现闪烁,因此我采用了两个iframe的方式,让其一个显示,一个从服务器上读取文件。
问题是:如果按照我用两个iframe的办法,怎样才能做到不重不漏地把数据读出来,并在客户端显示?
哪位朋友还要更好的解决方法?
...全文
110 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
licdut 2004-10-21
  • 打赏
  • 举报
回复
问题还未很好解决,请各位高手再帮帮忙
licdut 2004-10-05
  • 打赏
  • 举报
回复
对不起,“哪位朋友还要更好的解决方法?”应该是“哪位朋友还有更好的解决方法?”,谢谢。
licdut 2004-10-05
  • 打赏
  • 举报
回复
感谢各位的帮助,特别是cm4ever(小P) 还给出了示例代码。
“可以使用线程来做定时刷新,直到出现结束行内容再结束线程。这样就不用Iframe。”,这个具体怎么做?我是B/S模式。
朋友别哭 2004-10-05
  • 打赏
  • 举报
回复
up
TinyJimmy 2004-10-05
  • 打赏
  • 举报
回复
将数据刷新和文件读取分开来.

网页 -> 服务 -> 从内存中读取内容
服务 -> 读入文件写入内存

一来减少IO,效率要高; 二来避免冲突
禽兽v5 2004-10-05
  • 打赏
  • 举报
回复
另外,可以使用线程来做定时刷新,直到出现结束行内容再结束线程。这样就不用Iframe。
禽兽v5 2004-10-05
  • 打赏
  • 举报
回复
示例代码如下(计算长度的部分不一定正确):

// 要记得保存累计读取了多少内容
long content_length = request.getParameter("content_length") == null ? 0 : ((Long)request.getParameter("content_length")).longValue();

String filePath = "c:\sql.txt";
File file = new File(filePath);

// 只有文件内容增加时才进行新动作
if ( file.length > content_length )
{
BufferedReader br = new BufferedReader(new InputStreamReader( new FileInputStream(filePath) ) );

String line = "";

//越过原来读取过的内容
br.skip(content_length);

while ( (line = br.readLine()) != null )
{
// 累计读取到的文件长度
content_length += (new Integer( (line + "\n").length() )).longValue();

// do something...
}
}
umbrella1984 2004-10-05
  • 打赏
  • 举报
回复
用java.util.Timer与java.util.TimerTask类可以实现定时刷新,然后用IO类来读取,其他的就简单了。
禽兽v5 2004-10-05
  • 打赏
  • 举报
回复
纪录文件当前累计的字节数,然后判断文件容量是否大于累计字节,也就是文件内容有所增加。如果有所增加则读取新增内容,否则等待下一次检测。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧