I've been trying to use substring to get the last three digits as part of the extension but wasn't successful.

Can anyone tell me how I can extract the extension from the file name?


Say L is the last character in your filename.(Same as Fname.Length-1)
Then Fname.Substring(L-3,L); should do the trick.

You don't mention if you have to use substring to get the extension or if that is just the method to grab it you decided to use so I'll ask another question . . .

Is there any reason you are not using path.getextension() ?

extension = Path.GetExtension(fileName);

You can get this info from a google search on C# path.getextension or msdn is here: http://msdn.microsoft.com/en-us/library/system.io.path.getextension.aspx

(wondering because .aspx is four while .doc is three etc.)

commented: Nice! +4

After the last "." get the string is after
you may have file, its name readme.program.user.txt!!
It's the time to play with string class, you can also use regular expression and you can use FileInfo.

*NEVER* make the assumption that a files extension is only 3 characters.

try this simple procedure :

private string Getextension(string fileName)
            string ext = string.Empty;
            Boolean hita = false;
            int i = fileName.Length - 1;
            char[] arr = fileName.ToCharArray();
            while(i>0 & !hita)
                if (arr[i] == '.') hita = true;
                else ext = arr[i] + ext;
                i = i - 1;

            return ext;

System.IO.FileInfo fi = new System.IO.FileInfo(FileName);
string ext = fi.Extension.ToString();