Introduction
There are hundreds and hundreds of classes in the .NET framework and there are some that are really useful which you may never come across. I've been a .NET programmer for several years and I still run across classes in the framework that I've never seen before. I thought it would be cool to document some of the really useful (in my opinion) classes because other programmers may never have known they existed.
System.IO.Path
System.IO.Path
is a static class that provides many useful operations on file or directory path information in a cross-platform manner. Cross-platform manner? Yes, you can run .NET code on non-Windows machines. In case you don't know, check out
Mono, which is a .NET implementation for Linux, Solaris, Mac and Windows. There are several cool articles right here on Code Project about Mono - just do a search on "mono". If you're writing cross-platform code, being cognisant of your platform is key and
System.IO.Path
can help.
The System.IO.Path
class operates on strings, not on actual FileInfo
, DirectoryInfo
or Stream
objects. Most of the methods act on a string
or return a string
. The actual work to create the file needs to be done with extra code.
How do I find the temporary directory?
string temppath = Path.GetTempPath();
How do I generate a random file name?
string randomFile = Path.GetRandomFileName();
How do I generate a random text file?
You can use the ChangeExtension()
method in conjunction with the GetRandomFileName()
method.
string temptext = Path.ChangeExtension(Path.GetRandomFileName(), ".txt");
How do I get a unique temp file?
Ever need to generate a uniquely named file for some temporary operation? GetTempFileName()
will actually generate a 0 byte file on the file system and return you the name.
string tempfile = Path.GetTempFileName();
How do I get the file name from a full path?
string filepath = "c:\\windows\\somefile.txt"
file = Path.GetFileName(filepath);
How do I get the directory name from a file path?
string filepath = "c:\\windows\\somefile.txt"
file = Path.GetDirectoryName(filepath);
How do I get the file extension?
string filepath = "c:\\windows\\somefile.txt"
file = Path.GetExtension(filepath);
How do I find invalid file name characters?
The GetInvalidFileNameChars()
will return an array of chars that are invalid to use in a file name. You can use this to check a user supplied file name before attempting to write a file to disk. There is a correspnding method for invalid path chars as well, GetInvalidPathChars()
.
string userfile = "junk.t>t";
char[] userchars = userfile.ToCharArray();
char[] invalids = Path.GetInvalidFileNameChars();
foreach (char c in userchars)
{
foreach (char i in invalids)
{
if (c == i)
throw new Exception("File name contains invalid chars!");
}
}
Conclusion
I didn't cover ever last System.IO.Path method or property, but I hit some of the big ones. I'm going to attempt to run these on my Linux box running Mono and update the article.