Delphi 支持三种文件类型: 文本文件、记录文件、无类型文件。
文本文件是以行为单位进行读、写的。由于每一行的长度不一定相同,不能计算出给定行在文件中的确切位置,因而只能顺序地读写。文本文件只能单独为读或写而打开,在一个打开的文本文件上同时进行读、写操作是不允许的。文本文件的打开需要两个步骤:1.文件变量与文件名关联;2.初始化读写。1.文件变量与文件名关联: AssignFile(VarTxt, FileName); --以可写方式打开文件。如果文件不存在,将会自动创建。使用该函数,将会覆盖文件中的所有内容FileName 如果省略路径将默认当前目录。2.初始化读写有三种方式:(1) Reset: 只读打开, 指针移到文件头;(2) Rewrite: 创建新文件并打开, 只写;(3) Append: 从尾部追加, 指针当然在文件尾。文件不存在时使用 Reset 或 Append 会引发一个I/O异常。最后用 CloseFile 关闭文件。一 TmemoryStream转化为 byte[] (TByteDynArray)
View Code
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[] 保存入文件
View Code
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 ;
@ 运算符返回一个变量、函数、过程或方法的地址,也就是说,@ 运算符构建一个指向运算数的指针。