+ -
当前位置:首页 → 问答吧 → linux,usb 文件读写,文件读写和内存操作的问题于探讨

linux,usb 文件读写,文件读写和内存操作的问题于探讨

时间:2010-07-16

来源:互联网

目前编程遇到一个问题,希望高手赐教赐教:

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

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

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


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

作者: wanshun1818   发布时间: 2010-07-16

对USB不太了解,不过不管写多少数据不也是一个字节一个字节的来,也不是每次都固定写500M吧。

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

不知道可行否?

作者: gkzok   发布时间: 2010-07-16

同意楼上的,用链表

作者: bitmilong   发布时间: 2010-07-16

回复 gkzok


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

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

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

作者: wanshun1818   发布时间: 2010-07-16

不知道USB存储跟内存有什么区别,帮你顶一下

作者: gkzok   发布时间: 2010-07-16

想法:

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

作者: 0vk0   发布时间: 2010-07-16