在我们的项目中,我们将多个文件合并为一个大文件,假设文件大小为4~12 to
现在我需要编写一个服务器来处理客户端请求,
每个请求客户端想要检索该大文件中的一部分或将新文件推入该大文件(尾部)中,
那么,在低延迟的情况下,最好的方法是什么?
RandomAccessFile?InputStream
发布于 2013-02-21 17:35:52
我想您在这里需要的是一个ReentrantReadWriteLock。
此锁将允许同时进行读操作,并且一次仅允许一个写操作。您可以在每次读操作之前获取读锁,并在读操作结束后释放它。以及在每次写操作之前的写锁定,并且在那之后释放它。
让您的客户端调用上述代码。希望能有所帮助。
final ReadWriteLock lock = new ReentrantReadWriteLock();
public void checkFile(String yourData) {
lock.readLock().lock();
boolean toWrite = false;
// Read the file, check for data and update toWrite accordingly
lock.readLock().unlock();
if (toWrite) {
lock.writeLock().lock();
// write the data to the file
lock.writeLock().unlock();
}
}发布于 2013-02-21 11:14:41
如果您不将块重新组合到单个文件中,则会获得最佳性能。下一步是使用来自NIO的FileChannel。
发布于 2013-02-21 11:15:52
如果您使用的是Linux,我建议您使用bash shell中的cat命令来组合文件。效率高,不需要其他编程语言。
示例
cat file1.txt file2.txt >> file_combine.txthttps://stackoverflow.com/questions/14993918
复制相似问题