首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

怎么用文件流来修改文本文件内容?请大侠们指点

2012-09-14 
如何用文件流来修改文本文件内容?请大侠们指点如何用文件流来修改文本文件内容?请大侠们指点我用下面的方

如何用文件流来修改文本文件内容?请大侠们指点
如何用文件流来修改文本文件内容?
请大侠们指点
我用下面的方法,可以修改,可是这样一保存,就氢文本文件的文件结构给改了.
方法一:
Var 
 fTXT : TTextFile;
Begin
 AssignFile(fTXT, AMFileDir + '\test.txt');
  ReWrite(fTXT);
  Append(fTXT);
  Write(fTXT, 'ISBN=' + edtCorpID.Text + '-' + edtZineBookNO.Text + '-' + RightStr('000000' + edtZineNumber.Text, 6) + '&COMNAME=' + edtCorpName.Text + '&DONE=DONE');
  CloseFile(fTXT); 
end; 

方法二:

Var 
 sl2 : TStringList;
Biegin
  try
  sl2 := TStringList.create;
  SDIMInfo := 'ISBN=88104423-1-000001&COMNAME="' + edtCorpName.Text + '"&DONE=DONE"';
  sl2.Add(SDIMInfo);
  sl2.SaveToFile(AMFileDir + '\test.txt');
  finally
  sl2.Free;
  end;
End;

请大家指点,我要如何修改文本文件才不会修改其文件结构呢?谢谢

[解决办法]
什么结构
[解决办法]
说的不清楚,什么结构,
你用
ReWrite(fTXT); ///当然会清空原有内容了
[解决办法]
如果是这样的话用文件流吧,先读入文件流,然后修改,之后保存即可
[解决办法]
var
f:TFileStream
begin
f:= TFileStream.Create(filename, fmOpenRead or fmShareDenyNone);
f.Position:=f.size-20;//启始修改点
f.Read(buff,10);
f.free;
end;
[解决办法]
TStream 类中定义的属性介绍如下:
1、Size:此属性以字节返回流中数据大小。
2、Position:此属性控制流中存取指针的位置。
Tstream 中定义的虚方法有四个:
1、Read:此方法实现将数据从流中读出。函数原形为:
Function Read(var Buffer?Count:Longint):Longint?virtual?abstract?
参数Buffer 为数据读出时放置的缓冲区,Count 为需要读出的数据的字节数,该方法返回值为
实际读出的字节数,它可以小于或等于Count 中指定的值。
2、Write:此方法实现将数据写入流中。函数原形为:
Function Write(var Buffer?Count:Longint):Longint?virtual?abstract?
参数Buffer 为将要写入流中的数据的缓冲区,Count 为数据的长度字节数,该方法返回值为实
际写入流中的字节数。
3、Seek:此方法实现流中读取指针的移动。函数原形为:
Function Seek(Offset:Longint?Origint:Word):Longint?virtual?abstract?
参数Offset 为偏移字节数,参数Origint 指出Offset 的实际意义,其可能的取值如下:
soFromBeginning:Offset 为移动后指针距离数据开始的位置。此时Offset 必须大于或者等于零。
soFromCurrent:Offset 为移动后指针与当前指针的相对位置。
soFromEnd:Offset 为移动后指针距离数据结束的位置。此时Offset 必须小于或者等于零。该方
法返回值为移动后指针的位置。
4、Setsize:此方法实现改变数据的大小。函数原形为:
Function Setsize(NewSize:Longint)?virtual?
另外,TStream 类中还定义了几个静态方法:
1、ReadBuffer:此方法的作用是从流中当前位置读取数据。函数原形为:
Procedure ReadBuffer(var Buffer?Count:Longint)?
参数的定义跟上面的Read 相同。注意:当读取的数据字节数与需要读取的字节数不相同时,
将产生EReadError 异常。
2、WriteBuffer:此方法的作用是在当前位置向流写入数据。函数原形为:
Procedure WriteBuffer(var Buffer?Count:Longint)?
参数的定义跟上面的Write 相同。注意:当写入的数据字节数与需要写入的字节数不相同时,
将产生EWriteError 异常。
3、CopyFrom:此方法的作用是从其它流中拷贝数据流。函数原形为:
Function CopyFrom(Source:TStream?Count:Longint):Longint?
参数Source 为提供数据的流,Count 为拷贝的数据字节数。当Count 大于0 时,CopyFrom 从
Source 参数的当前位置拷贝Count 个字节的数据;当Count 等于0 时,CopyFrom 设置Source
参数的Position 属性为0,然后拷贝Source 的所有数据
[解决办法]
TO:楼主,你还是找本书看看吧,晕死。
[解决办法]
这是跟 UTF-8 有关的, 文件头的 FF FE 是标志。

打开文件,先写两个字节的标志,然后再写正常的内容就行了。

如果文件里有中文的话,还需要用 UTF8Encode / UTF8Decode 转换,否则是乱码。

热点排行