echo ls to a file and then read file and selectively delete

I'm trying to write a script that will do an ls of a location, echo it into a file, and then read that file and selectively delete files/folders, so it would go something like this:

cd $CLEAN_LOCN
ls >>$TMP_FILE
while read LINE
do
if LINE = $DONTDELETE
skip
elseif LINE = $DONTDELETE2
skip
elseif LINE = $DONTDELETE3
skip
elseif
rm -rf $LINE
done <$TMP_FILE

My problem is that any variation of ls that I try echoes as one line into the $TMP_FILE and reads as one line. So I'm looking for a method to split the ls with linefeeds so it displays that way and reads that way in the $TMP_FILE or a method to write it with , separators and use that to split the lines in the While read statement.
I've tried:
ls -1
ls -m
And:
while IFS=, read LINE
but they all read as 1 line. Thus far, I'm just trying to echo the LINE in the while loop to get the correct syntax.

The location has a set # of folders that are known but I am trying to archive everything and delete some of those folders along with any other junk someone might throw in that location.

---------- Post updated at 01:35 PM ---------- Previous update was at 01:26 PM ----------

solved it differently avoiding temp file:

for LINE in `ls`; do
echo $LINE
done

Close, pipelining kills latency:

ls | while read LINE
do
echo "$LINE"
done
 
But you can pipe the whole task:
 
ls | grep -Ev "^($DONTDELETE|$DONTDELETE2|$DONTDELETE3)$" | xargs -r rm -rf

Not only is ls unnecessary, it will break your script if any filenames contain whitespace or other pathological characters. Use:

for line in *; do

That will remove leading or trailing spaces and reduce multiple spaces to a single space. Use:

echo "$LINE"

Or, preferably:

printf "%s\n" "$LINE"

If all you want to do is print the filenames, you don't need a loop:

printf "%s\n" *