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;
复制代码