I have a program that "greps" out various directory paths from a log text file and prints various results according to the word.
Examples of Directory paths:
C:/Documents and Settings/All Users/Desktop/AccessData FTK Imager.lnk
C:/Documents and Settings/All Users/Start Menu/Programs/AccessData
C:/Documents and Settings/Administrator/Desktop/AccessData FTK Imager.exe:Zone.Identifier
Therefore how can I grep out the file or folder name after the last "/"? This is to help the program to identify between files and folder. Please do take note of the multiple "." and white spaces found within a directory paths. etc "Imager.exe:Zone.Identifier". Therefore it is difficult to use if(!name.contains()".")
Etc. How to get the "AccessData FTK Imager.lnk" or "AccessData" or "AccessData FTK Imager.exe:Zone.Identifier" from the path STRING?!
May someone please advise on the methods or codes to solve this problem? Thanks!
The codes:
if (!token[7].Contains("."))
{
Console.WriteLine("The path is a folder?");
Console.WriteLine(token[7]);
Console.WriteLine(actions);
MacActions(actions);
x = 1;
}
You can simply split the whole string by /
e.g.:
string a="C:/Documents and Settings/All Users/Desktop/AccessData FTK Imager.lnk"; string[] words=a.split('/'); int len=words.length; so now words[len] returns the data after last slash(/).. I hope you understand...
how about tokenized it with "/" like what you're doing ... and then you'll know that the last token is the file, and whatever before it is the path.
Use
Path.GetFileName
.There is no way to determine is a path represents a file or folder, unless you access the actual file system. A directory name like 'Foo.exe' would be perfectly valid, and a file with no extension ('Foobar') would be valid too.
I guess you only have a string that represents the name of the file, if that is the case you can't really be sure. It's totally ok to have a folder namen something like
Folder.doc
. So if you don't have access to the actual file system it is hard to check. You can get close though using regular expression like:Try it on: http://www.regexplanet.com/simple/index.html If you get any output in group number 3 it's likely that it is a file and not a folder. If you don't get some output try this direct after:
That will give you the folder in group 2.
Use the Path class when working with file paths, and use the File and Directory class when working with actual files and folders.
outputs:
This class operates on strings, as I do not have those particular files and/or folders on my system. Also it's impossible to determine whether
AccessData
is meant to be a folder or a file without an extension.I could use some common sense and declare everything with an extension to be a file (
Path.GetFileExtension
can be used here) and everything else to be a folder.Or I could just check it the string in question is indeed a file or a folder on my machine using (
File.Exists
andDirectory.Exists
respectively).