android 文件系统,创建单个文件大小有2G限制

您所在的位置:网站首页 真人秀节目的真实性是什么意思 android 文件系统,创建单个文件大小有2G限制

android 文件系统,创建单个文件大小有2G限制

2023-08-20 14:24| 来源: 网络整理| 查看: 265

最近有碰到一个问题,在使用 Camera 录相的时候,录像文件大小达到 2G 时,就自动保存了。

起初以为是在代码中作了最大录像文件大小的限制。

long maxFileSize = mStorageSpace - Storage.LOW_STORAGE_THRESHOLD; Log.e(TAG,"----------initializeRecorder-----------------requestedSizeLimit=" + requestedSizeLimit); if (requestedSizeLimit > 0 && requestedSizeLimit < maxFileSize) { maxFileSize = requestedSizeLimit; } try { Log.v(TAG, "maxFileSize "+maxFileSize); mMediaRecorder.setMaxFileSize(maxFileSize); } catch (RuntimeException exception) { // We are going to ignore failure of setMaxFileSize here, as // a) The composer selected may simply not support it, or // b) The underlying media framework may not handle 64-bit range // on the size restriction. } 但通过在上述代码中加 log 来看,maxFileSize 为剩余磁盘空间大小(磁盘空间大小足够,远大于2G)。

后面通过网络查询才知道是 32位 linux 系统有创建单个文件 2G大小 上限限制(众所周知,android 是采用的 linux 内核)。

在 32 位的 Linux 上面写超过 2GB 的文件会发生错误,甚至导致程度终止执行,

这是因为 Linux 的系统内部处理档案时用的数据类型为 long,而 long 在32 位的系统上大小为 32 位,因此最大只能支持到 2^31-1 = 2,147,483,647 bytes ,等于是 2GB 扣掉1byte 的文件大小。

详细内容参见:http://blog.urdada.net/2008/04/18/84/

关于Linux 各种文件系统的特征如下所示(来自于网络):

Ext2 Ext2 文件系统是Linux 特有的文件系统,它拥有传统UNIX 文件系统的许多特性,如块、inode 和目录等概念。Ext2 非常健壮,具有很多优良的性能。同时,Ext2 也是可扩展的,它提供 的扩展功能允许用户在不格式化文件系统的情况下使用新的特性。 ---------------------------------------------------- 最大文件大小: 1TB 最大文件极限: 仅受文件系统大小限制 最大分区/文件系统大小: 4TB 最大文件名长度: 255 字符 缺省最小/最大块大小: 1024/4096 字节 缺省inode 分配: 每4096 字节为1 在强制FS 检查前的最大装载: 20(可配置) ---------------------------------------------------- Ext3 Ext3 文件系统构筑于ext2 文件系统之上,对标准的Linux ext2 文件系统进行了日志扩展。 日志特性显著地减少文件系统崩溃后的恢复时间,它被广泛地应用于带有共享磁盘的HA 站 点。 ---------------------------------------------------- 最大文件大小: 1TB 最大文件极限: 仅受文件系统大小限制 最大分区/文件系统大小: 4TB 最大文件名长度: 255 字符 缺省最小/最大块大小: 1024/4096 字节 缺省inode 分配: 每4096 字节为1 在强制FS 检查前的最大装载: 20(可配置) ---------------------------------------------------- ReiserFS ReiserFS 文件系统3.2.25 版是一种可选的日志文件系统。其优点包括更好的磁盘空间利用率、 更好的磁盘访问性能和更快的崩溃恢复功能。 ---------------------------------------------------- 最大文件大小: 1TB 最大文件极限: 32k 目录,42 亿文件 最大分区/文件系统大小: 4TB 最大文件名长度: 255 字符 ---------------------------------------------------- JFS 日志文件系统(Journaled File System, JFS)是一种全64 位文件系统。所有文件系统结构字 段均为64 位大小。它允许JFS 同时支持大文件和分区。JFS 由IBM 根据GPL 许可开发,它 是从其AIX 系统移植过来的。 JFS 提供基于日志的字节级文件系统,它可以开发用于面向交易的高性能系统。它是可扩展 的,且稳定可靠,其优于非日志文件系统之处在于其快速重新启动能力。JFS 可以在数秒钟 或分钟之间将文件系统恢复到完好一致的状态。 尽管它主要针对服务器的高吞吐量和可靠性要求(从单一处理器系统到高级多处理器和集群 系统)而设计,JFS 同样也适用于要求性能和可靠性的客户配置。 ---------------------------------------------------- 最小文件系统大小 16 MB 最大文件大小: 受体系结构限制 最大文件极限: 受文件系统大小限制 缺省最小/最大块大小: 1024/4096 字节 缺省inode 分配: 动态 ---------------------------------------------------- LVM 逻辑卷管理程序(Logical Volume Manager, LVM)是一种在线磁盘存储管理的子系统,它已 经成为跨Linux 存储管理的“事实上”标准。 LVM 支持磁盘和磁盘子系统的企业级卷管理,它可以成组任意数量的磁盘到卷组。卷组的 总能力可以分配给逻辑卷,这些逻辑卷可以按正常块设备来进行访问。 此外,LVM 还提供存储的逻辑分离。当在线地对块设备进行大小调整的过程中,可以将数 据从一个物理设备移动到另一个物理设备。LVM 也允许系统管理员轻松地对系统进行升级, 去除有故障的磁盘,重新组织负载,并适应变化了的系统需求。 ---------------------------------------------------- 最大逻辑卷大小 从使用4 Mb 盘区的256 Gb 到使用较大PE 的1 Pb 最大逻辑卷数: 256 最大逻辑组数: 99 每PV 的最大PE 数: 65534 缺省物理盘区大小: 4 Mb ----------------------------------------------------

可以用如下代码来测试你当前的文件系统支持的最大文件大小

void main() { int fd; char s[]="Linux Programmer!\n"; fd =open("/home/tgbao/temp",O_WRONLY|O_CREAT); while(1) { write(fd,s,sizeof(s)); } close(fd); } 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3