可以用Java等待文件写入吗?

可以用Java等待文件写入吗?,java,android,file,ipc,native,Java,Android,File,Ipc,Native,我想使用文件系统在java进程和本机进程之间传递信息。我希望java进程打开该文件并等待某个单词写入该文件。我的具体需求是Android,但我猜任何答案都适用于其他版本的Java 我想象我可以一次又一次地打开该文件,寻找java进程希望写入该文件的单词,然后在打开之间睡觉。但感觉可能有更有效的方法 我更喜欢使用文件系统,因为在我的设置中,从本机代码使用套接字(对于Java来说更自然)可能有点复杂。如果有什么不同的话,我也可以用管道来解决问题 还有一点需要注意:Java进程是一个简单的命令行进程,

我想使用文件系统在java进程和本机进程之间传递信息。我希望java进程打开该文件并等待某个单词写入该文件。我的具体需求是Android,但我猜任何答案都适用于其他版本的Java

我想象我可以一次又一次地打开该文件,寻找java进程希望写入该文件的单词,然后在打开之间睡觉。但感觉可能有更有效的方法

我更喜欢使用文件系统,因为在我的设置中,从本机代码使用套接字(对于Java来说更自然)可能有点复杂。如果有什么不同的话,我也可以用管道来解决问题

还有一点需要注意:Java进程是一个简单的命令行进程,而不是APK应用程序


做这件事的最佳方法是什么?

StdIn库是实现这一点的最简单方法之一。您可以使用以下选项运行程序:

java File < input.txt 

您的设置听起来很奇怪:Android设备上的Java独立进程。您是否安装了一个单独的OpenJDK plus运行时JAR,或者我们讨论的是使用DalvikVM执行的DEX/OAT格式的Java程序?因为您可以使用的API是不同的…是的,我正在用dalvikvm运行一个JAR。这是出于测试目的。那么您应该能够使用文件系统监视器。我找到了另一个适合我的解决方案,但为什么不写一个答案,以便我可以检查并接受它?它不会到达文件末尾并在本机进程成功写入之前退出吗?
String word = "x" // whatever String you're looking for

while (!StdIn.isEmpty()) {
    String test = StdIn.readString();
    if (test.equals(word)) 
        // do something 
}