如何获取文件中的最后一个字符,如果是某个字符,删除它而不将整个文件加载到内存中?
这是我到目前为止所做的。
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
}
答案 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 );
}