Add a fileDS function that iterates without copying

This prevents infinite mutual recursion between the mapFile_ and
copyFile functions.  mapFile_ would copy the file to prevent
modification during iteration.  copyFile would iterate to move all the
elements.
Close a file when a peek finds no elements
Log the list of endpoints before creating and removing them