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();