Aubergine, 22 bytes, noncompeting
The tab character at the end signals end of file, and the interpreters all crash without it. It's cool that this challenge showed up on my radar this week since I just finished golfing this for the wiki.
-a1+a1=oA=Bi-BA:bB=ia
I'll explain how it works later. It does not use file I/O but it very much does read its listing, and it is definitely cheating.