我必须编写一个字符串的实现,它将其值存储在硬盘驱动器而不是RAM(我知道它听起来多么愚蠢,但它的目的是教我们如何不同的排序算法工作RAM和硬盘驱动器)。这是我到目前为止已经写的:编辑一个文件的行编号
class HDDArray : IEnumerable<int>
{
private string filePath;
public int this[int index]
{
get
{
using (var reader = new StreamReader(filePath))
{
string line = reader.ReadLine();
for (int i = 0; i < index; i++)
{
line = reader.ReadLine();
}
return Convert.ToInt32(line);
}
}
set
{
using (var fs = File.Open(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
var reader = new StreamReader(fs);
var writer = new StreamWriter(fs);
for (int i = 0; i < index; i++)
{
reader.ReadLine();
}
writer.WriteLine(value);
writer.Dispose();
}
}
}
public int Length
{
get
{
int length = 0;
using (var reader = new StreamReader(filePath))
{
while (reader.ReadLine() != null)
{
length++;
}
}
return length;
}
}
public HDDArray(string file)
{
filePath = file;
if (File.Exists(file))
File.WriteAllText(file, String.Empty);
else
File.Create(file).Dispose();
}
public IEnumerator<int> GetEnumerator()
{
using (var reader = new StreamReader(filePath))
{
string line;
while ((line = reader.ReadLine()) != null)
{
yield return Convert.ToInt32(line);
}
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
我面对试图在当编辑线(分度器的设定部分),我最终加入了新的生产线,而不是编辑的问题旧的(这很明显,为什么,我只是不知道如何解决它)。
我不得不将'Encoding.ASCII'添加到作家和阅读器中,以免崩溃。似乎工作正常,谢谢。 – PoVa