【问题标题】:How to continuously read an online/web file in java?如何在java中连续读取在线/网络文件?
【发布时间】:2020-03-25 01:56:12
【问题描述】:

我正在用 java 制作一个简单的纯文本即时通讯工具。它目前的工作方式是通过向 php 文件发送请求将所有消息放入在线文本文件中(我知道这对安全性不利,但这只是为了学习如何在 java 中连接网络应用程序。 ) 目前,我不断获取 messages.txt 文件的全部内容并将它们放入我的 JTextPane 中,如下所示:

while(true) {
URL url = new URL("{path to text file}");
InputStream in = url.openStream();
Scanner s = new Scanner(in).useDelimiter("\\A");
String conversation = s.hasNext() ? s.next() : "";
textPane.setText(conversation);
}

但是当对话变得足够长时,它就会滞后,因为它不断地从网络服务器获取 100kb 以上的文件。

我想要做的是只读取文件的更改,这样它就不会延迟并通过请求大量纯文本文件来最大化我的互联网连接。我不想让它每 2 秒运行一次,因为它是一个即时信使,没有延迟。

我将如何只获取对文件的更改并将它们添加到文本窗格?

【问题讨论】:

    标签: java http web text continuous


    【解决方案1】:

    一旦超过某个阈值,您能否将文件内容推送到另一个文件。这将确保您对较小的文件进行操作。

    【讨论】:

    • 我该怎么做?
    【解决方案2】:

    你可以放置一些服务器端脚本来调用文件,而不是直接联系 url

    您可以(作为客户端)向服务器脚本提供最后一行/消息标识符,服务器可以响应添加客户端提供的消息 ID 之后的新消息。此外它还可以发送新的最后一条消息 id

    使用这种方法,服务器端脚本甚至不需要读取整个文件,而是可以在消息 id 包含有关日志文件中的行的信息时立即跳到所需的行

    当然,这种方法与真实场景相差甚远,但它可以用于学习 IMO

    【讨论】:

    • 我该怎么做?
    • 您需要一些运行服务器端代码的技术。选择范围很广。在 Java 世界中,您可以从 tomcat 开始,或者如果您已经在问题中提到了 php,请继续使用它...
    猜你喜欢
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多