首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何高效的返回一部分文件并发?

问如何高效的返回一部分文件并发?
EN

Stack Overflow用户
提问于 2013-02-21 11:09:23
回答 3查看 47关注 0票数 0

在我们的项目中,我们将多个文件合并为一个大文件,假设文件大小为4~12 to

现在我需要编写一个服务器来处理客户端请求,

每个请求客户端想要检索该大文件中的一部分或将新文件推入该大文件(尾部)中,

那么,在低延迟的情况下,最好的方法是什么?

RandomAccessFile?InputStream

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-21 17:35:52

我想您在这里需要的是一个ReentrantReadWriteLock。

此锁将允许同时进行读操作,并且一次仅允许一个写操作。您可以在每次读操作之前获取读锁,并在读操作结束后释放它。以及在每次写操作之前的写锁定,并且在那之后释放它。

让您的客户端调用上述代码。希望能有所帮助。

代码语言:javascript
复制
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();
    }
}
票数 0
EN

Stack Overflow用户

发布于 2013-02-21 11:14:41

如果您不将块重新组合到单个文件中,则会获得最佳性能。下一步是使用来自NIO的FileChannel。

票数 0
EN

Stack Overflow用户

发布于 2013-02-21 11:15:52

如果您使用的是Linux,我建议您使用bash shell中的cat命令来组合文件。效率高,不需要其他编程语言。

示例

代码语言:javascript
复制
cat file1.txt file2.txt >> file_combine.txt
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14993918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档