Вы можете сделать это легко, получив все пути в коллекцию и сохранив счетчик. Если вы не хотите загружать все пути к файлу в память, вы можете использовать метод Directory.EnumerateFiles
и Skip
для получения следующего или предыдущего файла. Например :
int counter = 0;
string NextFile(string path, ref int counter)
{
var filePath = Directory.EnumerateFiles(path).Skip(counter).First();
counter++;
return filePath;
}
string PreviousFile(string path, ref int counter)
{
var filePath = Directory.EnumerateFiles(path).Skip(counter - 1).First();
counter--;
return filePath;
}
Ofcourse вам потребуются некоторые дополнительные проверки, например, в NextFile
вам нужно проверить, если вы дойдете до последнего файла, вам нужно сбросить счетчик, также в PreviousFile
вы должны убедиться, что счетчик не 0
, если так возвращают первый файл и т.д.
Я уверен, что под обложками это список всех файлов в папке, а затем вопрос о следующем элементе списка. Я предполагаю, что потому, что было бы не очень эффективно запрашивать файловую систему каждый раз, когда – dotnetom
получает все пути в коллекцию, добавляет счетчик, начиная с 0 и увеличивая/уменьшая счетчик, чтобы получить следующий/предыдущий путь. –
Это будет довольно медленный процесс, если папка содержит большое количество файлов, не так ли? Возможно, есть другой назначенный путь. – SharpAffair