Разбор JSON в Android не получает весь массив JSON

Простой способ сделать это - использовать список для файлов и очередь для каталогов. Он сохраняет память. Если вы используете рекурсивную программу для выполнения одной и той же задачи, это может вызвать исключение OutOfMemory. Вывод: файлы, добавленные в список, организованы в соответствии с деревом каталогов сверху вниз (ширина).

public static List<string> GetAllFilesFromFolder(string root, bool searchSubfolders) {
    Queue<string> folders = new Queue<string>();
    List<string> files = new List<string>();
    folders.Enqueue(root);
    while (folders.Count != 0) {
        string currentFolder = folders.Dequeue();
        try {
            string[] filesInCurrent = System.IO.Directory.GetFiles(currentFolder, "*.*", System.IO.SearchOption.TopDirectoryOnly);
            files.AddRange(filesInCurrent);
        }
        catch {
            // Do Nothing
        }
        try {
            if (searchSubfolders) {
                string[] foldersInCurrent = System.IO.Directory.GetDirectories(currentFolder, "*.*", System.IO.SearchOption.TopDirectoryOnly);
                foreach (string _current in foldersInCurrent) {
                    folders.Enqueue(_current);
                }
            }
        }
        catch {
            // Do Nothing
        }
    }
    return files;
}

Шаги:

  1. Заблокируйте корень в queue
  2. В цикле Dequeue it, добавьте файлы в этот каталог в список и добавьте подпапки в очередь.
  3. Повторяйте до тех пор, пока очередь не будет пуста.
0
задан Haider 25 February 2015 в 14:01
поделиться