无法声明静态类型“System.IO.Directory”的变量
以前看到一个教程,估计是老版的.net下写的,有用到Directory 实例化变量,类似 Directory strDir = null;这在新版的.net中是不被允许的。因为Directory是静态类型的变量了。正如错误信息所提示的:“无法声明静态类型“System.IO.Directory”的变量”,“无法创建静态类“System.IO.Directory”的实例”,一切皆因为System.IO.Directory是静态的类型,不懂什么是静态类型的,去补一下基础。
你需要做的就是类似下面这样的操作string[] strDrivers = Directory.GetLogicalDrives();
直接用类名加上属性或方法就可以达到要求了。
string[] strDrivers = Directory.GetLogicalDrives();
就是取得驱动盘符列表。
asp.net列出当前文件夹目录
上一篇文章说到用asp.net列出当前驱动盘目录,这一篇文章要说的是列出指定文件夹下面的文件夹名与文件名,在这样的基础上,就可以遍历指定文件夹的子目录,文件等。
本文主要用到GetDirectories方法和GetFiles()方法。都包含在System.IO命名空间中。
源码如下:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
string[] strDrivers = Directory.GetLogicalDrives();
string strResult = "";
try
{
strResult += "<h3>文件夹目录:</h3><ul>";
string[] strDir1 = Directory.GetDirectories(strDrivers[0]);
for (int i = 0; i < strDir1.Length; i++)
{
strResult += "<li>" + strDir1[i] + "<br/>";
}
strResult += "</ul>";
strResult += "<h3>文件名:</h3><ul>";
string[] strFile = Directory.GetFiles(strDrivers[0]);
for (int i = 0; i < strFile.Length; i++)
{
strResult += "<li>" + strFile[i] + "<br/>";
}
strResult += "</ul>";
Label1.Text = strResult;
}catch(Exception e1)
{
Label1.Text ="错误:" + e1.ToString();
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>asp.net列出C盘文件夹目录与文件</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
说明:此处使用strDrivers[0]来做要取的目录,在没有软驱的情况下,取到的才能够是C盘的子目录与文件,当然,你应该能够修改GetDirectories()处的值。然后达到自己想要的效果。
有本文的甚而,修改一下,就可以遍历出当前目录与子目录的所有文件与文件夹。