以下のコードを実行すると、ディレクトリ内の50個のファイルのうち8個だけが追加されます。
ファイルには、0001、0002、0003、0004などの名前が付けられています。
追加されるファイルは、アイテムが追加されなくなったときの7,0,1,2,3,4,5,6の順序です。
SortedSetの最小値と最大値を見ると、それぞれ6と7です。
私の質問は、これを行うためのより良い方法、または以下のコードを取得して私が望むことを行う方法があると思います。具体的には、ファイル内の解析された値に基づいて、ファイルパス文字列をコレクション内で並べ替えたいと思います。
string[] files = System.IO.Directory.GetFiles(textBox1.Text);
SortedSet<string> ascending = new SortedSet<string>(new MyComparer());
foreach (string f in files)
{
bool added = ascending.Add(f);
}
//Compares values in file format
//MyComparer.Compare:
using (FileStream fsx = new FileStream(x, FileMode.Open, FileAccess.Read, FileShare.Read))
using (FileStream fsy = new FileStream(y, FileMode.Open, FileAccess.Read, FileShare.Read))
using (StreamReader rx = new StreamReader(fsx))
using (StreamReader ry = new StreamReader(fsy))
{
//the first 6 bytes represent a number
char[] buffx = new char[6], buffy = new char[6];
rx.Read(buffx, 0, 6);
ry.Read(buffy, 0, 6);
int nx, ny;
if (!int.TryParse(new String(buffx), out nx))
throw new Exception("Wtf?");
if (!int.TryParse(new String(buffy), out ny))
throw new Exception("Wtf?");
return Comparer<int>.Default.Compare(nx, ny);
}