TmemoryStream ,bety[], TByteDynArray文件转化函数小结

Delphi 支持三种文件类型: 文本文件、记录文件、无类型文件。

文本文件是以行为单位进行读、写的。由于每一行的长度不一定相同,不能计算出给定行在文件中的确切位置,因而只能顺序地读写。

文本文件只能单独为读或写而打开,在一个打开的文本文件上同时进行读、写操作是不允许的。

文本文件的打开需要两个步骤:1.文件变量与文件名关联;2.初始化读写。

1.文件变量与文件名关联: 
AssignFile(VarTxt, FileName); --以可写方式打开文件。如果文件不存在,将会自动创建。使用该函数,将会覆盖文件中的所有内容
FileName 如果省略路径将默认当前目录。

2.初始化读写有三种方式:
(1) Reset: 只读打开, 指针移到文件头;
(2) Rewrite: 创建新文件并打开, 只写;
(3) Append: 从尾部追加, 指针当然在文件尾。

文件不存在时使用 Reset 或 Append 会引发一个I/O异常。

最后用 CloseFile 关闭文件。
 

一 TmemoryStream转化为 byte[] (TByteDynArray)

procedure TForm1.Btn1Click(Sender: TObject);
var
  memoryStream:TMemoryStream;
  byteArray:TByteDynArray;
    fsize:Integer;
begin
   memoryStream:=TMemoryStream.Create;
   memoryStream.LoadFromFile('d:\\Sunset.jpg');
   fsize:=  memoryStream.Size;
   SetLength(byteArray,fsize);   --设置数组长度
    memoryStream.Read(byteArray[0],fsize);  -- 注意应该为byteArray[0],而不是byteArray
   ByteArrayToFile(byteArray,'d:\\aa.jpg' );
   memoryStream.Free;
end;

二, 将bety[] 保存入文件

procedure ByteArrayToFile(const ByteArray : TByteDynArray; const FileName : string );
var
 Count: integer;
 F: FIle of Byte;
 pTemp: Pointer;
begin
 AssignFile( F, FileName );-- 文件变量与文件名关联
 Rewrite(F);  --重新写一个文件,即覆盖,文件若不存在会自己创建。
 try
    Count := Length( ByteArray );
    pTemp := @ByteArray[0];
    BlockWrite(F, pTemp^, Count ); // blockWrite 写入; 参数2是要写入的内容(pTemp^表示指针的内容); 参数3表示写入 Count 次,以一个字节为单位。 
 finally
    CloseFile( F );
 end;
end;
复制代码

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值