我有一个传感器将他收集的数据写入txt文件(连续,每秒一个),我关心的唯一数据是传感器收集的最后一个数据, 我想用Matlab(或Java)分析数据,怎么做? 提前谢谢!
答案 0 :(得分:2)
您需要能够查看文件以进行更新,然后在检测到更改时执行某些操作。我相信之前必须使用轮询机制,但在Java 7中你可以使用WatchService
:
public static void main(String[] args) throws InterruptedException {
Path dir = Paths.get("src/main/resources/");
try {
WatchService watcher = FileSystems.getDefault().newWatchService();
WatchKey key = dir.register(watcher, StandardWatchEventKinds.ENTRY_MODIFY);
while (true){
watcher.take();
List<WatchEvent<?>> events = key.pollEvents();
// Handle update
key.reset();
}
} catch (IOException x) {
System.err.println(x);
}
}
我建议你仔细考虑如何处理更新的线程安全 - 我建议在读取之前将文件复制到安全的“临时”位置,以避免与更新过程发生读/写冲突。 / p>
答案 1 :(得分:0)
这只是http://www.mathworks.com/help/matlab/ref/fgetl.html
的一个小修改fid = fopen('sensor.txt');
tline = fgetl(fid);
while 1
if ischar(tline)
disp(tline)
else
pause(1)
end
tline = fgetl(fid);
end
这不是一个完成的解决方案,请考虑何时关闭文件。缺少flose(fid)
,代码当前在无限循环中运行。使用 CTRL + C 退出。