使用Directory.GetFiles()操作字符串
本文关键字:操作 字符串 Directory GetFiles 使用 | 更新日期: 2023-09-27 17:49:18
我正在给images[]
分配一个数组,该数组包含给定目录的完整路径的图像文件名。
string[] images = DirLoad.FileNamesArray(
IO.Loaders.PathType.full,
IO.Loaders.FileExtension.jpg
);
…现在,images[]
存储了我需要的所有文件名,因为我必须使用完整路径来完成它,
使用Directory.GetFiles()
下一步操作要求它作为本地文件名。
(每个都作为字符串类型参数传递给另一个方法)
我的问题是:
我怎么能省略第一部分- HttpRuntime.AppDomainAppPath
…
这是一个使用示例,字符串是currentDir
,我需要从images[]
public class IO
{
public class Loaders
{
readonly string currentDir = HttpRuntime.AppDomainAppPath;
public string selecedDirName { get; set; }
/// <summary>
/// assign The Loaders.selectedDir First before calling
/// </summary>
/// <param name="foldertoLoad"></param>
/// <returns></returns>
public enum PathType
{
full, local
}
public enum FileExtension
{
jpg,png,txt,xml,htm,js,aspx,css
}
public string[] FileNamesArray(PathType SelectedPathMode, FileExtension selectedfileType)
{
string thisFolder = "";
string thatFileType= string.Format("*.{0}",selectedfileType.ToString());
switch (SelectedPathMode)
{
case PathType.full:
thisFolder = Path.Combine(currentDir, selecedDirName);
break;
case PathType.local:
thisFolder = selecedDirName;
break;
default:
break;
}
string[] foundArr = Directory.GetFiles(thisFolder, thatFileType);
return foundArr;
}
}
}
更新,这是我已经尝试过的
string fileName;
string[] images = DirLoad.FilesArray(IO.Loaders.PathType.full, IO.Loaders.FileExtention.jpg);
foreach (var currImage in images)
{
int startingAt = DirLoad.currentDir.Length ;
int finalPoint = currImage.Length - startingAt;
fileName = new String(currImage.ToCharArray(startingAt, finalPoint));
baseStyle.Add(string.Format("{0}url({1}) {2}", BackGroundCssProp, fileName, imageProps));
}
return baseStyle.ToArray();
我仍然不明白,你想要完成的从头到尾,但是..如果你有一个完整的路径数组,你只需要从这些路径中获得文件名,你可以做以下事情:
实际上files
可能包含随机的,绝对不同的路径,但根据我从问题中捕获的内容,让它是:
var files = Directory.GetFiles(@"path");
那么你可以使用Path。GetFileName方法,通过简单的Enumerable从这些路径中检索文件名。选择LINQ-statement:
var fileNamesOnly = files.Select(f => Path.GetFileName(f));
我不完全确定你到底需要什么。对于你的句子:
字符串是currentDir,我需要从图像中的每个元素中修剪[]
您可以使用LINQ尝试以下操作:
string currDir = "SomeString";
string[] images = new string[] { "SomeStringabc1.jpg", "SomeStringabc2.jpg", "SomeStringabc3.jpg", "abc.jpg" };
string[] newImages = images.Select(r => r.StartsWith(currDir)
? r.Replace(currDir, "") : r)
.ToArray();
或使用字符串。TrimStart
string[] newImages = images.Select(r => r.TrimStart(currDir.ToCharArray())).ToArray();
对不起,我不清楚……如果你只想从整个路径中获取文件名,那么你可以简单地使用Split,用特殊字符分割整个路径并使用最后一个数组元素。
一旦你得到你的"images"数组中的所有路径,你可以尝试下面的代码。
例如: -
for(i=0;i<images.length;i++)
{
string [] cuttofilename=images[i].split(''');
string filename=cuttofilename[cuttofilename.lentgh-1];
}