首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

|M| 小弟我写了一个读取网站文件夹的事型代码,但样让文件夹按名字排呢

2012-01-31 
|M| 我写了一个读取网站文件夹的事型代码,但样让文件夹按名字排呢voidBindDir(DirectoryInfodir,TreeNoden

|M| 我写了一个读取网站文件夹的事型代码,但样让文件夹按名字排呢
void   BindDir(DirectoryInfo   dir,   TreeNode   node)
        {
                DirectoryInfo[]   subdir   =   dir.GetDirectories();

                for   (Int32   i   =   0;   i   <=   subdir.Length   -   1;   i++)
                {
                        TreeNode   childnode   =   new   TreeNode();
                        childnode.Text   =   subdir[i].Name;
                        childnode.Value   =   subdir[i].FullName;
                        node.ChildNodes.Add(childnode);
                        BindDir(subdir[i],   childnode);
                }
                FileInfo[]   file   =   dir.GetFiles();
                for   (Int32   j   =   0;   j   <=   file.Length   -   1;   j++)
                {
                        TreeNode   childnode   =   new   TreeNode();
                        childnode.Text   =   file[j].Name;
                        childnode.Value   =   file[j].FullName;
                        node.ChildNodes.Add(childnode);
                }
        }  
这样得出来的会变成
2007
      02
      03
      01
而我想要的是
2007
      01
      02
      03
----------------------------------
上面代码要怎么改
谢谢

[解决办法]
土方法就是把全部数据填入List里面排序一下再出来循环
[解决办法]
for (Int32 j = file.Length - 1; j > =0; j--)
{
TreeNode childnode = new TreeNode();
childnode.Text = file[j].Name;
childnode.Value = file[j].FullName;
node.ChildNodes.Add(childnode);
}

就OK了
[解决办法]
看错了 上页的不行 我再写
[解决办法]
mark
[解决办法]
这样是排序,再依次添加到树上就行了。当然也可以用List或ArrayList,只是觉得那样数据格式要转换来转换去,效率不高
TreeNode tempNode=new TreeNode();
TreeNodeCollection tnc=new TreeNodeCollection();
//tnc在此初使化 填充数据
ArrayList tempList=new ArrayList(8);
int maxPos=0;
for (int i=0;i <tnc.Count;i++)
{
for (int j=i;j <tnc.Count;j++)


{
if (tnc[maxPos].Text <tnc[j].Text)
{
maxPos=j;
}
}
if(i!=maxPos)
{
tempNode=tnc[i];
tnc[i]=tnc[maxPos];
tnc[maxPos]=tempNode;
}
}
[解决办法]
mark
[解决办法]
添加之前先排序..
[解决办法]
晕....WO_YOU_XIE_SHANG_XIN() 回答的挺快呀...
就是他的思路 先把文件夹下的文件夹名字 存到 ArrayList数组中
然后用sort()方法排序 再for ArrayList数组 添加节点
ArrayList aList = new ArrayList();
aList.add( "d ");
aList.add( "a ");
aList.add( "b ");
aList.add( "c ");
aList.add( "e ");
aList.sort();// 排序
System.out.println(aList);

结果
a
b
c
d
e
[解决办法]
List排序



[解决办法]
循环加就是了
[解决办法]
支持,lanymy(﹎蓝言觅ぷ雨)
[解决办法]
void BindDir(DirectoryInfo dir, TreeNode node)
{
DirectoryInfo[] subdir = dir.GetDirectories();

Array.Sort(subdir); // here

for (Int32 i = 0; i <= subdir.Length - 1; i++)
{
TreeNode childnode = new TreeNode();
childnode.Text = subdir[i].Name;
childnode.Value = subdir[i].FullName;
node.ChildNodes.Add(childnode);
BindDir(subdir[i], childnode);
}
FileInfo[] file = dir.GetFiles();

Array.Sort(file); // here

for (Int32 j = 0; j <= file.Length - 1; j++)
{
TreeNode childnode = new TreeNode();
childnode.Text = file[j].Name;
childnode.Value = file[j].FullName;
node.ChildNodes.Add(childnode);
}
}
[解决办法]
假如默认排序不是你想要的,可能【 倒序 】了,

那么,你可以显示提供 Comparer 调用重载方法

Array.Sort (
Array array,
IComparer comparer
)

[解决办法]
jf up 学习

热点排行