Some ideas from an Algorithms perspective:
For an always sorted list, you could make use of data structures like AVL or Red-Black Trees
to maintain sorted order of FileList upon creating, deleting or renaming a file as per your choice.
To improve performance with large directories:
Use a hash table for filename lookups, inspired by the linux kernel's dcache
Map filenames (or file IDs) to FileNode
pointers in the Red Black Tree for O(1) lookups.
To handle rename cases, I would:
Further scope of improvement: