Developer should not use “Hide extensions for known file types” in Windows Explorer

One my colleague got a new PC and had a problem opening file using simple code(just from MSDN example ):
 
FileInfo fi1 = new FileInfo(relativePath);



        if (!fi1.Exists)
….
It showed that file doesn’t exist. We’ve tried also File.Exists(relativePath), changed the path to absolule- the same result-
file is visible in Windows Explorer, but doesn’t exist in code. Note that directory was shown in debugger as existing.
We’ve created(using Windows Explorer) a new Text file, named “test.txt” and tried to open it in code- the same “file not exist” problem.
We’ve checked different security settings- the same.
Finally I recognized, that  Windows Explorer was set to “Hide extensions for known file types” and file visible as “test.txt” was actually created as

test.txt.txt.
The lesson: developer (and any user who has understanding of file extensions) should never have “Hide extensions for known file types” in Windows Explorer.
By the way: If you want to use a relative path from Windows Service, reset current directory  in the code
System.IO.Directory.SetCurrentDirectory (System.AppDomain.CurrentDomain.BaseDirectory);
Advertisements