我想计算文件夹文件夹的图像数量,但会产生此错误:
Could not find a part of the path 'c:\Content\slideshow\images\image\'.
所有图像都在项目的文件夹中。位于Content/slideshow/images/image
这是我的代码:
<%
string dir = @"/Content/slideshow/images/image";
string[] files;
int numFiles;
files = System.IO.Directory.GetFiles(dir);
numFiles = files.Length;
Response.Write("num ber of images :" + numFiles);
%>
答案 0 :(得分:2)
“无法找到路径的一部分 'C:\内容\幻灯片\图像\图像\'“
非常简单地说文件夹不存在。如果要使用相对路径,可以执行以下操作。
Server.MapPath("~/{RelativePathHere})
编辑:回复您的评论。您将需要遍历该文件并检查每个文件的扩展名(保留您自己的计数)
答案 1 :(得分:2)
使用HttpContext.Current.Server.MapPath将虚拟路径映射到物理路径,然后将其传递给Directory.GetFiles方法
答案 2 :(得分:1)
要调用Directory.GetFiles(),您需要将完整路径传递给images目录。
string dirPath = @"~/Content/slideshow/images/image";
string dirFullPath = Server.MapPath(dirPath);
string[] files;
int numFiles;
files = System.IO.Directory.GetFiles(dirFullPath);
numFiles = files.Length;
Response.Write("number of images: " + numFiles);
Server.MapPath返回与dirPath虚拟路径关联的整个物理文件路径。
答案 3 :(得分:1)
您需要将此作为相对路径using Server.MapPath
传递
然后我建议使用DirectoryInfo.GetFiles
而不是Directory.GetFiles并过滤所需的图像类型,因此不计算非图像文件。这将产生FileInfo[]
。
<%
string dir = Server.MapPath(@"/Content/slideshow/images/image");
FileInfo[] files;
int numFiles;
files = (new System.IO.DirectoryInfo(dir)).GetFiles("filePattern");
numFiles = files.Length;
Response.Write("num ber of images :" + numFiles);
%>
如果您想要计算多种文件类型,最好的方法就是删除模式然后过滤结果。
var extensions = new String[] {"jpg", "png", "gif"};
files = (new System.IO.DirectInfo(dir)).GetFiles();
foreach(var extension in extensions)
{
numFiles += files.AsEnumerable.Where(f => f.Extension.Equals(extension));
}
答案 4 :(得分:0)
int numberOfFiles ;
string path = "C:/PIC";
numberOfFiles = System.IO.Directory.GetFiles(path).Length;
立即检查