免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7481 | 回复: 10
打印 上一主题 下一主题

[应用] linux,usb 文件读写,文件读写和内存操作的问题于探讨 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-16 14:23 |只看该作者 |倒序浏览
目前编程遇到一个问题,希望高手赐教赐教:

1,问题描述:
    创建一个usb上面的文件,限制 limit_size, 假设为 500M,然后我不断的往该文件上写数据,当文件达到上限500M后,
我需要继续往里面写数据,但我又不能超过500M, 且保证改文件500M里面保存的始终 是我最近写入的500M的数据,请问
我在写入文件达500M时,在往里面写数据该怎么操作,才能达到文件里面始终写入的是我最近写入的500M数据;

2. 我觉得可行的办法,
   讲500M数据从文件中拷贝到内存中,用一个指针指向这500内存末尾,然后不断向该指针指向的内存地址写数据,然后每次写完
指针左移动500M的大小,讲这500M的数据写如usb文件;

但感觉内存消耗大,速度慢,几乎无法实现,
所以请教高人有没可行的方法,实现这个功能?


在弱弱的问一句,能对usb文件里的数据进行直接移动完成这功能,这个可行吗?

论坛徽章:
0
2 [报告]
发表于 2010-07-16 15:14 |只看该作者
对USB不太了解,不过不管写多少数据不也是一个字节一个字节的来,也不是每次都固定写500M吧。

模拟一个FIFO,俩指针,一个指头一个指尾同时移动。

不知道可行否?

论坛徽章:
0
3 [报告]
发表于 2010-07-16 15:21 |只看该作者
同意楼上的,用链表

论坛徽章:
0
4 [报告]
发表于 2010-07-16 17:27 |只看该作者
回复 2# gkzok


    500M 只是举个例子,主要是说明文件长度是固定,就像缓存一样,一个读一个写,缓冲大小是固定的,然后超过缓冲时,还干掉缓冲黎曼的旧
数据,然后写进新数据,但保证长度不超过缓存大小;

而我现在不同的时我是往usb文件里面写数据,而且大小也固定,我不断往里面写,当超过文件大小limit时,我希望能够新进新数据,干掉最早写进去的数据,
你说的队列应该是这个原理,但主要是我现在 数据在usb文件里面,不在内存里,所以不知道如何实现是好

PS: 一个usb文件500M 应该不大,但对内存就应该是一个很大的数据

论坛徽章:
0
5 [报告]
发表于 2010-07-16 18:23 |只看该作者
不知道USB存储跟内存有什么区别,帮你顶一下

论坛徽章:
0
6 [报告]
发表于 2010-07-16 20:39 |只看该作者
想法:

    从这段内存的头开始写,覆盖原来的数据

论坛徽章:
0
7 [报告]
发表于 2010-07-26 17:57 |只看该作者
回复 6# 0vk0


    可是我希望覆盖 usb文件里面的数据, 而且 只覆盖文件最开头的数据, 然后最新写入的数据放在文件末尾,可是 文件后面数据无法像内存样往前移动,这样我望usb文件末尾写的话就超界了 很困惑

论坛徽章:
0
8 [报告]
发表于 2010-07-26 18:05 |只看该作者
前几天和一公司牛B人交流,他建议我加一个头:

1。 当写入usb文件的数据不超过我的那个大小(也就是我举例用的500M), 这个头就为空,和普通写就一样,没什么特别处理了;

2 当写如超过了500M , 从文件开头写,然后在写完后,记录下当前写的为止,加入到我这个添加的文件头中,然后读取改文件的时候,就先读取这个头(可以用一个指针),然后从头所指向的位置开始读取,然后读取到末尾的时候,并不停止( 根据这个添加的头判断为 文件开头被重写过,我要继续读取), 返回开头,一直读取到我存储在头中的那个指针为止,这样我读取到的数据,就是我写进去的最新的500M 的数据;

  感觉理论上还是ok的,可是发现我在实现时有很多问题,而且对代码改动相当大(比如我在读到文件末尾,并不停止,还要继续判断,还有可能继续读;文加结束位也不一定是文件末尾了) ,这个改动太大;

希望那个大虾能够提供一个方法,能够让我usb文件里面顺序存储我写进的最新的500M 的数据,这样我读这个文件就像读普通文件一样就可以了;

望高手解决这个bug阿

论坛徽章:
0
9 [报告]
发表于 2010-07-26 20:22 |只看该作者
回复  0vk0


    可是我希望覆盖 usb文件里面的数据, 而且 只覆盖文件最开头的数据, 然后最新写入的 ...
wanshun1818 发表于 2010-07-26 17:57



    从文件头开始写入不是只覆盖文件最开头的数据?


不过最新写入的数据放在文件末尾就比较困难

论坛徽章:
0
10 [报告]
发表于 2010-07-27 20:23 |只看该作者
回复 9# 0vk0


    因为 我写入的是音视频数据,写入的文件进行需要进行播放,所以希望文件是按顺序存储的最近写入的buffer(也就是我说的
500M 数据)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP