internal virtual string DirectoryName(string filename) { filename = Backend.AbsName(filename); if (string.IsNullOrEmpty(filename)) { return(null); } var index = 0; if (-1 == (index = filename.LastIndexOf('/'))) { return(null); } if (0 == index || -1 == filename.LastIndexOf('/', index - 1)) { return(null); } return(filename.Substring(0, index)); }