通过Asp.net背后的代码访问Virtual Directory文件夹

时间:2013-03-10 09:56:11

标签: asp.net directory virtual

我正在尝试从代码隐藏中访问虚拟目录文件夹。

  • ASP.Net网站名称:SuperImages
  • 物理文件夹:C:\ images
  • 虚拟目录文件夹:allimages(与App_Data,Scripts,属性文件夹处于同一级别)

我正在尝试访问并计算此文件夹中的项目数,然后将其显示在网页上。

我该怎么做?

提前致谢!

=============================================== ========================

更新:从下面的帖子中,似乎Server.MapPath会给我正确的物理路径。然而,在我看来,我得到了错误的物理路径。原因应该是我正在运行'调试'模式。

因此,任何想法如何确保Server.MapPath正确指向并在调试模式下运行?

=============================================== =======================

解决方案:

问题是在调试模式下,我使用的是VS Dev Server而不是我的本地IIS。我在本地IIS中为我的应用程序重新创建了一个虚拟目录。在这个新创建的应用程序中为'allimages'文件夹重新创建了另一个虚拟目录,它解决了这个问题。

3 个答案:

答案 0 :(得分:4)

你可以这样做:

DirectoryInfo dir= new DirectoryInfo(Server.MapPath("/allimages"));

然后您可以获取此文件夹中的文件,如下所示:

FileInfo[] files = dir.GetFiles(string searchPattern,SearchOption searchOption);

并且对于文件的数量,您可以简单地进行数组计数。

答案 1 :(得分:0)

您可以像从普通应用程序访问它一样访问它。我,使用Directory类来获取项目的计数。只要确保你有足够的权限。

Directory.EnumerateFiles(myPath).Length;

答案 2 :(得分:0)

AS在帖子中建议
File count from a folder
你可以这样。

您可以使用

Directory.GetFiles 方法

另见 Directory.GetFiles Method (String, String, SearchOption)

您可以在此重载中指定搜索选项。

TopDirectoryOnly :仅包含搜索中的当前目录。

AllDirectories :包括搜索操作中的当前目录和所有子目录。此选项包括重新分析点,如安装的驱动器和搜索中的符号链接。

// searches current directory and sub directory
int fCount = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories).Length;
// searches current directory
int fCount = Directory.GetFiles(path, "*.*", SearchOption.TopDirectory).Length;

您必须使用Server.MapPath作为虚拟目录文件夹。

  string dir = Server.MapPath(@"/Content/slideshow/images/image");
  FileInfo[] files;
  int numFiles;
  files = (new System.IO.DirectoryInfo(dir)).GetFiles("filePattern");
  numFiles = files.Length;
相关问题