首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >到RandomAccessFile的FileChannel的行为

到RandomAccessFile的FileChannel的行为
EN

Stack Overflow用户
提问于 2010-10-22 01:54:29
回答 1查看 1.3K关注 0票数 0

我有一个用例,其中我的多个线程正在将数据写入相同的文件通道(池化),并且每个线程在文件中都有偏移量,从那里它们可以开始写入,直到要写入的数据的长度。因此,当我从池中请求文件通道时,如果通道尚未打开,它将以"rw“模式打开通道,并返回该文件通道(打开的文件可能是新文件,即大小= 0),否则将返回缓存通道。问题是线程可能不特定地写入数据,这意味着偏移量为1,000,000的线程可能在偏移量为0的线程之前开始写入。假设我打开了一个新文件(大小= 0),偏移量为1,000,000的线程在偏移量为0的线程之前开始写入数据(使用write(buffer, position) API)。

我的第一个问题:这是允许的吗,或者如果允许的话,我会得到一些异常:什么是我的数据被正确写入的保证。第三。当my (offset = 1,000,000)完成对文件的写操作后,空空间(0-999,999)中的内容会是什么?操作系统将如何分配这个中间空间?

EN

回答 1

Stack Overflow用户

发布于 2010-10-22 02:17:49

在没有实际尝试你所描述的内容的情况下,这里有一个有根据的猜测:

第一个问题: FileChannel是线程安全的,并且可以根据需要扩展文件大小(“当写入超过当前大小的字节时,文件的大小会增加”),所以我认为这是允许的。

第二个问题:不能保证您的数据被正确写入;这完全取决于您作为程序员的技能。:)

第三个问题:我希望“空白空间”的字节内容与操作系统相关,但您可以编写一个简单的程序来测试这一点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3990417

复制
相关文章

相似问题

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