1

我知道在本地可以逐行获取文件内容。就像

Scanner s = new Scanner(new File("D:\\Users\\qding\\Desktop\\spy.log"));
    while (s.hasNextLine()) {
        String line = s.nextLine();
        System.out.println("[Method Server] " + line);
}

是否可以从远程(Windows/Linux)获取文件内容?

此外,在远程,该文件是一个日志文件,并且总是更新。所以第二个问题是是否可以连续归档内容(使用多线程?)?

4

2 回答 2

1

A1。是的,可以从远程系统获取文件内容,只要它可以通过任何协议访问。

A2。在 unix 系统上,要读取不断变化的文件的内容,我们有tail -f ...命令。请参阅文件监控。要通过网络读取此类文件,您肯定需要 Threads 的帮助来等待和读取更新。Apache commons 有自定义tail的实现可以帮助你。

您可以参考SO 上的类似帖子,以获得详细的建议和讨论。

更新
A2:对于 Windows,Win32 有一个第三方 GUI 工具Tail,但我从未研究过它。
您还可以参考Windows 上的更多建议……相当于“tail -f”?.

于 2012-06-16T14:46:21.453 回答
0

好吧,让我试着回答这个问题,

  1. 我假设您已经使用 Socket 与服务器通信。

  2. 使用socket.shutdownOutput()("socket" in socket.shutdownOutput() 标识服务器地址和端口号) on the client side,因为您不需要写东西但需要继续从服务器读取。

  3. 如果您还要处理服务器部分,请确保对服务器的每个请求都在其自己的线程上运行。

  4. 现在在客户端使用下面的链接从服务器上的“文件”中读取

    http://www.java-samples.com/showtutorial.php?tutorialid=215

于 2012-06-16T14:43:04.567 回答