获取/删除文件的最后一个字符而不加载到内存中

时间:2014-08-09 15:39:44

标签: c#

如何获取文件中的最后一个字符,如果是某个字符,删除它而不将整个文件加载到内存中?

这是我到目前为止所做的。

using (var fileStream = new FileStream("file.txt", FileMode.Open, FileAccess.ReadWrite)){
  fileStream.Seek(-1, SeekOrigin.End);
  if (Convert.ToChar(fileStream.ReadByte()) == ']')
  {
    // Here to come deleting the character
  }

2 个答案:

答案 0 :(得分:6)

如果您的文本文件被编码为ASCII或UTF-8(其中]将被存储为单个字节),那么您可以将文件修剪一个字节:

if (fileStream.ReadByte() == ']')
    fileStream.SetLength(fileStream.Length - 1);

答案 1 :(得分:0)

您可以将Filestream的Position设置为最后一个字节,然后查看它的含义。然后使用道格拉斯解决方案将其删除:

using( FileStream fs = new FileStream( filePath, FileMode.Open ) )
        {
            fs.Position = fs.Seek( -1, SeekOrigin.End );
            if(fs.ReadByte() == ']' )
               fs.SetLength( fs.Length - 1 );
        }