如何为文件分配磁盘空间?

Campo 2001-04-16 12:50:00
我在写Ftp软件时候,遇到一个问题,就是新建一个文件之后,如何立即为它分配磁盘空间,而这个空间可能还很大(80、100M都有可能),我也曾经想过使用BlockWrite()
函数循环写这个文件,来分配磁盘空间,但又觉得速度必然很慢,所以想请教各位大侠
有什么方法、Delphi函数、API函数或者其他办法可以解决这个问题,但速度又很快。
24分送上。
...全文
247 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kingron 2001-04-18
  • 打赏
  • 举报
回复
读取数据到缓冲区啊。更Fileread,filewrite差不多。
windindance 2001-04-18
  • 打赏
  • 举报
回复
yes.
Campo 2001-04-17
  • 打赏
  • 举报
回复
谢谢Kingron兄,但随之出现的一个问题是,如果要追加文件的磁盘空间呢?该如何处置?
望继续赐教,高分相报。
Campo 2001-04-17
  • 打赏
  • 举报
回复
感谢两位,根据我的实践,
再次f := TFileStream.Create('file',fmCreate);会覆盖源文件。
使用f := TFileStream.Create('file',fmOpenRead);再用f.Size:=2000000则会出现错误。
使用f := TFileStream.Create('file',fmOpenWrite);则可以追加文件。

是两位的提示才使我解决了问题,谢谢。

虽然问题已经解决(也给两位加了分),但还是有一个题外话想请问两位:f.ReadBuffer和
f.WriteBuffer两个过程有什么作用,如何使用?

Kingron 2001-04-17
  • 打赏
  • 举报
回复
对。应该是f.free;
Kingron 2001-04-17
  • 打赏
  • 举报
回复
>>追加文件的磁盘空间
同样处理。create的时候,不会破坏原来的文件。
windindance 2001-04-17
  • 打赏
  • 举报
回复
ah,我用bcb习惯了,sorry.
f := TFileStream.Create('file',fmOpenRead);
f.Size := 2000000;
f.Free;

Campo 2001-04-16
  • 打赏
  • 举报
回复
感谢风之舞,你的程序确实行,但delete f这句有错,是不是f.destroy;请继续指教。
Kingron 2001-04-16
  • 打赏
  • 举报
回复
晚了........
windindance 2001-04-16
  • 打赏
  • 举报
回复
用文件流,
var f :TFileStream;
begin
f := TFileStream.Create('file',fmCreate);
f.Size := 1000000;
delete f;
end;

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧