Multithreading 如何使用rx java跟踪文件?
使用Multithreading 如何使用rx java跟踪文件?,multithreading,observable,rx-java,reactive-programming,observer-pattern,Multithreading,Observable,Rx Java,Reactive Programming,Observer Pattern,使用rxjava软件包,如何创建文件 代码: 我想在写入文件时解析它。首先,需要一个来自Java的totail-f foo.log。我不确定是否专门使用RxJava。但是您可以采用通用的Java解决方案并与RxJava结合。当然,这取决于你希望如何获得信息 一个基本选项是使用openInputStream(或某些流包装器类或读取器类)跟踪文件。 使用正在运行的线程,您可以使用InputStream.read等待文件,或使用InputStream.available采样新字节数。在RxJava中,
rxjava
软件包,如何创建文件
代码:
我想在写入文件时解析它。首先,需要一个来自Java的totail-f foo.log
。我不确定是否专门使用RxJava。但是您可以采用通用的Java解决方案并与RxJava结合。当然,这取决于你希望如何获得信息
一个基本选项是使用openInputStream
(或某些流包装器类或读取器类)跟踪文件。
使用正在运行的线程,您可以使用InputStream.read
等待文件,或使用InputStream.available
采样新字节数。在RxJava中,可以使用IO调度程序。在读完整行之后,只需从线程中调用一些观察者
在核心Java中,它可能看起来像:
class ObserveTask implements Runnable {
private File file;
private Listener listener;
@Override
public void run() {
try (InputStream stream = new FileInputStream(file);
BufferedReader reader = new BufferedReader(stream)) {
while (!Thread.interrupted()) {
String line = reader.readLine();
listener.onNewLine(line);
}
}
}
}
现在只需运行任务:
Scheduler scheduler = Schedulers.newThread();
Scheduler.Worker worker = scheduler.createWorker();
worker.schedule(new ObserveTask());
当然,这只是一个基本的例子
您可以将任务拆分为多个部分,每次运行时,都会检查字节,而流保持打开状态。当然,这是危险的,因为让溪流像那样打开可能会导致泄漏
更高级的解决方案可以包括使用。我不确定是否专门使用RxJava。但是您可以采用通用的Java解决方案并与RxJava结合。当然,这取决于你希望如何获得信息
一个基本选项是使用openInputStream
(或某些流包装器类或读取器类)跟踪文件。
使用正在运行的线程,您可以使用InputStream.read
等待文件,或使用InputStream.available
采样新字节数。在RxJava中,可以使用IO调度程序。在读完整行之后,只需从线程中调用一些观察者
在核心Java中,它可能看起来像:
class ObserveTask implements Runnable {
private File file;
private Listener listener;
@Override
public void run() {
try (InputStream stream = new FileInputStream(file);
BufferedReader reader = new BufferedReader(stream)) {
while (!Thread.interrupted()) {
String line = reader.readLine();
listener.onNewLine(line);
}
}
}
}
现在只需运行任务:
Scheduler scheduler = Schedulers.newThread();
Scheduler.Worker worker = scheduler.createWorker();
worker.schedule(new ObserveTask());
当然,这只是一个基本的例子
您可以将任务拆分为多个部分,每次运行时,都会检查字节,而流保持打开状态。当然,这是危险的,因为让溪流像那样打开可能会导致泄漏
更高级的解决方案可以包括使用