有如下代码: public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public static long GetDirSize(String DirStr) {
DirectoryInfo Dirinfo = new DirectoryInfo(DirStr);
long FolderSize = 0;
foreach (FileSystemInfo Fsi in Dirinfo.GetFileSystemInfos()) {
if (Fsi.Attributes.ToString().ToLower() == "directory")
{
FolderSize += GetDirSize(Fsi.FullName);
}
else {
if (File.Exists(Fsi.ToString()))
{
FileInfo fif = new FileInfo(Fsi.FullName);
FolderSize += fif.Length;
}
}
}
return FolderSize;
} private void button1_Click(object sender, EventArgs e)
{
if (folderBrowserDialog1.ShowDialog()==DialogResult.OK) {
textBox1.Text = folderBrowserDialog1.SelectedPath;
}
} private void button2_Click(object sender, EventArgs e)
{
DirectoryInfo dir = new DirectoryInfo(textBox1.Text);
FileInfo[] files = dir.GetFiles();
DirectoryInfo[] directors = dir.GetDirectories();
String Filddir="";
foreach ( FileInfo arfiles in files ){
if(Filddir==""){
Filddir=arfiles.ToString()+"|"+arfiles.Length;
}
else{
Filddir = Filddir + "," + arfiles.ToString()+"|"+arfiles.Length;
}
}
foreach (DirectoryInfo dirinfo in directors) {
Filddir = Filddir + ",文件夹:" + dirinfo.ToString() + "|" + GetDirSize(dirinfo.FullName);
}
richTextBox1.Text = Filddir.ToString();
char[] splstr ={ ',','|' };
String[] arrstr = Filddir.Split(splstr);
dataGridView1.DataSource = arrstr;
}
}我的目的是将获得的的数组放入datagridview里,分位2列,一列是文件或者文件夹的名字,另一列为对应的文件或者文件夹大小,请教怎么弄,还有,如果路径里面文件太多,会死机跳出,这问题怎么解决?谢谢!
{
public Form1()
{
InitializeComponent();
}
public static long GetDirSize(String DirStr) {
DirectoryInfo Dirinfo = new DirectoryInfo(DirStr);
long FolderSize = 0;
foreach (FileSystemInfo Fsi in Dirinfo.GetFileSystemInfos()) {
if (Fsi.Attributes.ToString().ToLower() == "directory")
{
FolderSize += GetDirSize(Fsi.FullName);
}
else {
if (File.Exists(Fsi.ToString()))
{
FileInfo fif = new FileInfo(Fsi.FullName);
FolderSize += fif.Length;
}
}
}
return FolderSize;
} private void button1_Click(object sender, EventArgs e)
{
if (folderBrowserDialog1.ShowDialog()==DialogResult.OK) {
textBox1.Text = folderBrowserDialog1.SelectedPath;
}
} private void button2_Click(object sender, EventArgs e)
{
DirectoryInfo dir = new DirectoryInfo(textBox1.Text);
FileInfo[] files = dir.GetFiles();
DirectoryInfo[] directors = dir.GetDirectories();
String Filddir="";
foreach ( FileInfo arfiles in files ){
if(Filddir==""){
Filddir=arfiles.ToString()+"|"+arfiles.Length;
}
else{
Filddir = Filddir + "," + arfiles.ToString()+"|"+arfiles.Length;
}
}
foreach (DirectoryInfo dirinfo in directors) {
Filddir = Filddir + ",文件夹:" + dirinfo.ToString() + "|" + GetDirSize(dirinfo.FullName);
}
richTextBox1.Text = Filddir.ToString();
char[] splstr ={ ',','|' };
String[] arrstr = Filddir.Split(splstr);
dataGridView1.DataSource = arrstr;
}
}我的目的是将获得的的数组放入datagridview里,分位2列,一列是文件或者文件夹的名字,另一列为对应的文件或者文件夹大小,请教怎么弄,还有,如果路径里面文件太多,会死机跳出,这问题怎么解决?谢谢!
{
//获取当前服务器上所有的磁盘分区
string[] driverList = Directory.GetLogicalDrives();
DriveInfo driverInfo = null;
//目录浏览
for (int i = 0; i < driverList.Length; i++)
{
driverInfo = new DriveInfo(driverList[i]);
if (driverInfo.DriveType == DriveType.Fixed)
{
TreeNode node = new TreeNode();
node.Name = driverList[i];
node.Text = driverList[i];
node.ImageIndex = 4;
node.SelectedImageIndex = 4;
this.tvTree.Nodes.Add(node);
}
}
this.tvTree.SelectedNode = this.tvTree.Nodes[0];
}
//目录子节点
private void AddNode(string path, TreeNode node)
{
DirectoryInfo info = new DirectoryInfo(path);
//包含文件夹
DirectoryInfo[] dirList = info.GetDirectories();
for (int i = 0; i < dirList.Length; i++)
{
string name = dirList[i].Name;
bool isExists = false;
foreach (TreeNode tn in node.Nodes)
{
if (tn.Text == name)
{
isExists = true;
break;
}
} if (name != "System Volume Information" && !isExists)
{
TreeNode subNode = new TreeNode(name);
subNode.ImageIndex = 1;
subNode.SelectedImageIndex = 2;
node.Nodes.Add(subNode);
}
}
//包含文件
FileInfo[] fList = info.GetFiles();
for (int i = 0; i < fList.Length; i++)
{
string name = fList[i].Name;
bool isExists = false;
foreach (TreeNode tn in node.Nodes)
{
if (tn.Text == name)
{
isExists = true;
break;
}
} if (!isExists)
{
TreeNode subNode = new TreeNode(name);
subNode.ImageIndex = 3;
subNode.SelectedImageIndex = 3;
node.Nodes.Add(subNode);
}
}
} private void tvTree_AfterSelect(object sender, TreeViewEventArgs e)
{
if (((TreeView)sender).SelectedNode.ImageIndex != 3)
AddNode(this.tvTree.SelectedNode.FullPath, this.tvTree.SelectedNode);
this.tvTree.SelectedNode.Expand();
}