相关疑难解决方法(0)

unix/linux的Java IO实现"tail -f"

我想知道用什么技术和/或库来实现linux命令"tail -f"的功能.我基本上是在寻找一个附加/替换的下降java.io.FileReader.客户端代码可能如下所示:

TailFileReader lft = new TailFileReader("application.log");
BufferedReader br = new BufferedReader(lft);
String line;
try {
  while (true) {
    line= br.readLine();
    // do something interesting with line
  }
} catch (IOException e) {
  // barf
}
Run Code Online (Sandbox Code Playgroud)

缺失的部分是合理的实施TailFileReader.它应该能够读取文件打开前存在的文件部分以及添加的行.

java file-io iostream file tail

69
推荐指数
5
解决办法
7万
查看次数

是否可以同时读取和写入文件?

这是场景:

  • ThreadA将从某个套接字读取,并将数据写入"MyFile.txt"
  • ThreadB将读取"MyFile",当它到达结尾时,它将循环直到MyFile中有新数据可用(因为我不想重新打开"MyFile.txt",并且因为我达不到时间而浪费时间我在哪里的位置..).

有可能做这样的事吗?

如果没有,还有另一种方法可以做这样的事吗?

java file-io multithreading

8
推荐指数
1
解决办法
1万
查看次数

离开Spring事务后从JDBC Blob读取

我有以下JAX-RS服务端点的示意图实现:

@GET
@Path("...")
@Transactional
public Response download() {
    java.sql.Blob blob = findBlob(...);
    return Response.ok(blob.getBinaryStream()).build();
}
Run Code Online (Sandbox Code Playgroud)

调用JAX-RS端点将从数据库中获取Blob(通过JPA)并将结果传回HTTP客户端.使用Blob和流而不是例如JPA的初始BLOB到byte []映射的目的是防止所有数据必须保存在内存中,而是直接从数据库流式传输到HTTP响应.

这按预期工作,我实际上不明白为什么.我是否从与底层JDBC连接和事务关联的数据库中获取Blob句柄?如果是这样,我会期望在从download()方法返回时提交Spring事务,这使得JAX-RS实现以后无法从Blob访问数据以将其流回HTTP响应.

blob jax-rs spring-transactions

5
推荐指数
2
解决办法
2183
查看次数