[c#] Directory.GetFiles: how to get only filename, not full path?

Possible Duplicate:
How to get only filenames within a directory using c#?

Using C#, I want to get the list of files in a folder.
My goal: ["file1.txt", "file2.txt"]

So I wrote this:

string[] files = Directory.GetFiles(dir);

Unfortunately, I get this output: ["C:\\dir\\file1.txt", "C:\\dir\\file2.txt"]

I could strip the unwanted "C:\dir\" part afterward, but is there a more elegant solution?

This question is related to c# filepath getfiles

The answer is


Use this to obtain only the filename.

Path.GetFileName(files[0]);

Try,

  string[] files =  new DirectoryInfo(dir).GetFiles().Select(o => o.Name).ToArray();

Above line may throw UnauthorizedAccessException. To handle this check out below link

C# Handle System.UnauthorizedAccessException in LINQ


Have a look at using FileInfo.Name Property

something like

string[] files = Directory.GetFiles(dir); 

for (int iFile = 0; iFile < files.Length; iFile++)
    string fn = new FileInfo(files[iFile]).Name;

Also have a look at using DirectoryInfo Class and FileInfo Class