首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何快速清零文件的内容?

如何快速清零文件的内容?
EN

Stack Overflow用户
提问于 2011-04-22 15:10:27
回答 5查看 2.4K关注 0票数 6

我想终止用户从我的程序中选择的文件。我写了这个示例代码:

代码语言:javascript
运行
AI代码解释
复制
var
  aFile: TFileStream;
Const
  FileAddr: String = 'H:\Akon.mp3';
  Buf: Byte = 0;
begin
  if FileExists(FileAddr) then
  begin
    // Open given file in file stream & rewrite it
    aFile:= TFileStream.Create(FileAddr, fmOpenReadWrite);
    try
      aFile.Seek(0, soFromBeginning);
      while aFile.Position <> aFile.Size do
        aFile.Write(Buf, 1);
    finally
      aFile.Free;
      ShowMessage('Finish');
    end;
  end;
end;

如你所见,我用0 (null)值覆盖了给定的文件。这段代码运行正常,但在大文件中速度非常慢。我想在多线程代码中执行此过程,但我尝试了一些代码,但无法完成。例如,我创建了4个线程来完成这项工作,以加快这一过程。

有什么方法可以加速这个过程吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-22 15:17:14

我不知道它是否可以帮助你,但我认为你可以做得更好(比多线程)写一个更大的缓冲区的文件。

例如,您可以初始化一个16k宽的缓冲区并直接写入FileStream;您只需检查文件的最后一部分,您只需写入整个缓冲区的一部分。

相信我,它真的会更快...

票数 4
EN

Stack Overflow用户

发布于 2011-04-22 15:44:35

好吧,我会咬人的:

代码语言:javascript
运行
AI代码解释
复制
const
  FileAddr: String = 'H:\Akon.mp3';
var
  aFile: TFileStream;
  Buf: array[0..1023] of Byte;
  Remaining, NumBytes: Integer;
begin
  if FileExists(FileAddr) then
  begin
    // Open given file in file stream & rewrite it
    aFile:= TFileStream.Create(FileAddr, fmOpenReadWrite);
    try
      FillChar(Buf, SizeOf(Buf), 0);
      Remaining := aFile.Size;
      while Remaining > 0 do begin
        NumBytes := SizeOf(Buf);
        if NumBytes < Remaining then
          NumBytes := Remaining;      
        aFile.WriteBuffer(Buf, NumBytes);
        Dec(Remaining, NumBytes);
      end;
    finally
      aFile.Free;
      ShowMessage('Finish');
    end;
  end;
end;
票数 4
EN

Stack Overflow用户

发布于 2011-04-22 15:27:28

多线程在这里帮不了你。您的限制是磁盘访问,这主要是因为您一次只写入一个字节。

Buf声明为字节数组,并使用FillCharZeroMemory对其进行初始化。然后更改while循环,如下所示:

代码语言:javascript
运行
AI代码解释
复制
while ((aFile.Position + SizeOf(Buf)) < aFile.Size) do
begin
  aFile.Write(Buf, SizeOf(Buf));
end;
if (aFile.Position < aFile.Size) then
begin
  aFile.Write(Buf, aFile.Size - aFile.Position);
end;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5756787

复制
相关文章
iOS动画-CALayer隐式动画原理与特性
Core Animation的一个非常显著的特性是就是实现动画,而且它支持隐式动画和显式动画两种形式,本篇我们主要从隐式动画说起;
梧雨北辰
2019/04/25
4.7K0
iOS动画-CALayer隐式动画原理与特性
iOS动画-CALayer基础知识
核心动画Core Animation,其实是由Layer Kit这样一个名字演变而来。它实际上是一个复合引擎,可以将存储在图层树体系中的不同独立图层,尽可能快地组合成不同的可视内容呈现于屏幕上;所以做动画只是Core Animation的特性之一;
梧雨北辰
2019/04/22
1.9K0
iOS动画-CALayer基础知识
iOS动画系列之一:带时分秒指针的时钟动画(上)1. 最终实现的效果以及思维导图2. CALayer3. 隐式动画
1. 最终实现的效果以及思维导图 实现的效果。不小心暴露了写文章的时间。-_-+++ 实现效果 实现的步骤思维导图: 思维导图.png 2. CALayer 其实今天分享的主角是CALayer。因为所
stanbai
2018/06/28
2.1K0
【Flutter 专题】71 图解基本隐式动画 Widget
和尚前段时间自定义 ACEStepper 步进器时,在 ACEStep 中尝试过 AnimatedCrossFade 用于在两个 Widget 切换过度,简单实用,今天和尚重点学习一下并尝试相关隐式动画 Widget;
阿策小和尚
2019/12/30
8260
【Flutter 专题】71 图解基本隐式动画 Widget
php隐式转换,隐式转换如何使用?总结隐式转换实例用法「建议收藏」
JavaScript的数据类型分为六种,分别为null,undefined,boolean,string,number,object。object是引用类型,其它的五种是基本类型或者是原始类型。我们可以用typeof方法打印来某个是属于哪个类型的。不同类型的变量比较要先转类型,叫做类型转换,类型转换也叫隐式转换。隐式转换通常发生在运算符加减乘除,等于,还有小于,大于等。。typeof ’11’ //string
全栈程序员站长
2022/11/10
1.7K0
php隐式转换,隐式转换如何使用?总结隐式转换实例用法「建议收藏」
iOS-核心动画详解之CALayer
1. CALayer的基本操作. 1. CALayer简介: CALayer我们又称为层,在每个UIView内部都有一个layer的属性,UIView之所以能够显示,就是因为它里面有layer层,才具有显示的功能,我们通过操作CALayer对象,可以很方便地调整UIView的一些外观属性,例如可以给UIView设置阴影,圆角,边框等等... 2. 操作layer改变UIView外观. 2.1 设置阴影 //默认图层是有阴影的, 只不过是透明的。1为不透明,0为透明 _RedView.layer.sha
xx_Cc
2018/05/10
2K0
如何找到隐式转换的SQL?
我们知道,隐式转换是在开发过程中非常容易进的一种坑,最常见的就是程序中传参类型和数据库表中定义的字段类型不一致,隐患就是不能用到隐式转换字段上的索引,原先能使用索引的语句,却使用了全表,影响执行性能。
bisal
2021/09/06
1.1K0
position和anchorPoint
本人录制技术视频地址: https://edu.csdn.net/lecturer/1899 欢迎观看。 一、理论概述
全栈程序员站长
2022/11/08
5400
如何实现隐式类型转换
Result 类型是许多编程语言中处理错误的常用方式,包括 C# 的 dotNext 库。在本文中,我们将通过例子回顾 C# 中 using 语句和隐式类型转换的使用。
newbe36524
2023/08/23
1840
Core Animation总结
众所周知,绚丽动画效果是iOS系统的一大特点,通过UIView层封装的动画,基本可以满足我们应用开发的所有需求,但若需要更加自由的控制动画的展示,我们就需要使用CoreAnimation框架中的一些类与方法
iOSSir
2019/05/21
1.3K0
iOS动画-CALayer布局属性详解
本篇主要内容: 1.Frame与Bounds的区别 2.中心点(position)与锚点(anchorPoint) 3.视图与图层的坐标系
梧雨北辰
2019/04/23
2.3K0
iOS动画-CALayer布局属性详解
mysql 隐式类型转换_scala的隐式转换
在mysql查询中,当查询条件左右两侧类型不匹配的时候会发生隐式转换,可能导致查询无法使用索引。下面分析两种隐式转换的情况
全栈程序员站长
2022/11/07
1.9K0
mysql 隐式类型转换_scala的隐式转换
iOS面试题:UIView block动画实现原理
在了解UIView block动画实现原理之前,需要先了解CALayer的可动画属性。
猿_人类
2019/07/03
1.1K0
iOS面试题:UIView block动画实现原理
Amesp中隐式溶剂模型的使用
在量子化学计算中,往往需要计算分子在溶液中的性质,这就需要使用到溶剂模型,其主要分为显式溶剂模型和隐式溶剂模型。显式溶剂模型是将具体的溶剂分子排布在溶质分子周围进行计算,耗时较高。而隐式溶剂模型不需要具体的溶剂分子以及其排布方式,只是将溶剂简单地使用一个可极化的连续介质来描述,这种方式耗时不高,且能很容易表现出溶剂的平均效应,因此被大多数量子化学软件广泛采用。
用户7592569
2023/09/03
5320
Amesp中隐式溶剂模型的使用
javascript 隐式转换_mysql隐式转换
简单数据类型(也称为原始类型):Undefined、Null、Boolean、Number、String 和 Symbol。ES6 中新增了一种 Symbol 。这种类型的对象永不相等,即始创建的时候传入相同的值,可以解决属性名冲突的问题,做为标记。 复杂数据类型叫 Object(对象)。Object 是一种无序名值对的集合。
全栈程序员站长
2022/11/07
1.6K0
javascript 隐式转换_mysql隐式转换
MySQL中需要重视的隐式转换
在系统集成,对接的过程中,很多时候我们都会忽略数据类型的兼容性,导致在系统运转起来的时候,原本正常的流程会容易堵塞,其中一个潜在的原因就是因为数据隐式转换带来的额外代价,为了模拟这个问题,我们使用如下的方式创建表 test,分别指定列name为varchar和int类型,来对比查看隐式转换带来的性能问题。
jeanron100
2019/06/04
1K0
iOS学习——核心动画之Layer基础
CALayer我们又称它叫做层。在每个UIView内部都有一个layer这样一个属性,UIView之所以能够显示,就是因为它里面有这个layer才具有显示的功能。我们可以通过操作CALayer对象,可以很方便地调整UIView的一些外观属性,可以给UIView设置阴影,圆角,边框等等...
mukekeheart
2018/08/01
1.6K0
iOS学习——核心动画之Layer基础
隐式Intent
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(“com.example.shaomiao.testintent.intent.action.TestActivity”); startActivity(intent); } });
tea9
2022/07/15
5330
隐式Intent
Scala 【 14 隐式转换与隐式参数 】
​ Scala 的隐式转换,其实最核心的就是定义隐式转换函数,即 implicit conversion function 。
Lokinli
2023/03/09
8280
JS隐式转换_隐式转换是什么
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/10
1.9K0

相似问题

如何使用Amazon更新DynamoDB全局辅助索引?

21

如何使用全局辅助索引创建表dynamodb

20

dynastyjs:如何使用辅助全局索引查找项目

112

如果分区键相同,DynamoDB本地辅助索引与全局辅助索引之间是否存在差异?

10

查询DynamoDb全局辅助索引

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文