在 C# 中为文件保留 2 个文件指针作为文件内容的索引
Keeping 2 filepointers for a file in C# as index to file content
我们创建 Fstream1 打开文件并存储文件的开头。
现在我们将 fstream1 复制到 fstream2。
注意:fstream1
将向上读取文件,而 fstream2 将向下读取文件。
在向上或向下读取数据块之前,相应的 fstream*
必须记住初始起始位置。
问题是当我们读取两个 fstream 的位置时,它正在移动,导致丢失要存储的位置。
示例:考虑初始 fstream1.pos = 500
& fstream2.pos =500
。现在,如果我向上读取 200 个字符,fstream1.pos=300
但 fstream2.pos
应该保持 500,在我们的例子中 fstream2.pos
也变成 300。
同样,如果我向下阅读。
fileStream1 = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, 1, true);
fileStream2 = filestream1; // want this but without opening the file again
考虑 filestream
就像 C++ 中的 filepointers
。
注意:以上任务是在 C# 中。
假设您将向上或向下扫描文件以更快地定位文件中的位置,我建议:-
1) 打开文件一次。
2) 保留两个变量 - UpPointer 和 DownPointer 并将它们初始化为 UpPointer = DownPointer = 500(来自您的示例)。
3) 进行读取或扫描时,更新相应的指针。
我们创建 Fstream1 打开文件并存储文件的开头。 现在我们将 fstream1 复制到 fstream2。
注意:fstream1
将向上读取文件,而 fstream2 将向下读取文件。
在向上或向下读取数据块之前,相应的 fstream*
必须记住初始起始位置。
问题是当我们读取两个 fstream 的位置时,它正在移动,导致丢失要存储的位置。
示例:考虑初始 fstream1.pos = 500
& fstream2.pos =500
。现在,如果我向上读取 200 个字符,fstream1.pos=300
但 fstream2.pos
应该保持 500,在我们的例子中 fstream2.pos
也变成 300。
同样,如果我向下阅读。
fileStream1 = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, 1, true);
fileStream2 = filestream1; // want this but without opening the file again
考虑 filestream
就像 C++ 中的 filepointers
。
注意:以上任务是在 C# 中。
假设您将向上或向下扫描文件以更快地定位文件中的位置,我建议:-
1) 打开文件一次。
2) 保留两个变量 - UpPointer 和 DownPointer 并将它们初始化为 UpPointer = DownPointer = 500(来自您的示例)。
3) 进行读取或扫描时,更新相应的指针。