`
hcmfys
  • 浏览: 357646 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

c# Dos Tree

    博客分类:
  • c#
阅读更多

 用法DOS 命令 发现 Tree 命令很有趣 就用C# 写了一个

写得不好请指教  

http://files.cnblogs.com/hcmfys/code.rar 

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;


namespace com.qiuSmile
{
    public class FileTree
    {
        /// <summary>
        /// 此程序是模仿DOS tree功能
        /// 作者 相思雨 hcmfys@163.com
        /// 2008-09-14 中秋节
        // 使用方法
        //  FileTree.showTree("c:\\");
        //如果要显示文件  FileTree.showFile=true;
        // 如果要写入文件则加上  FileTree.writeFile("d:\\test.txt");
        /// our knowlege belong to all human
        /// </summary>
        private static int nodeCount = 1;
        private static bool first = false;
        private static DirectoryInfo root = null;
        private static string splitString = "├─";
        private static string empty = "  ";
        private static string insertString = "│";
        private static string fileStr = "";
        public static bool showFile = false;// show file name
        public static void showTree(string dir)
        {
            try
            {
                string str = "";
                StringBuilder strBulider = new StringBuilder();

                DirectoryInfo dirDirctory = new DirectoryInfo(dir);

                if (!first)
                {
                    root = new DirectoryInfo(dir);
                    first = true;
                }
                DirectoryInfo[] sonDir = dirDirctory.GetDirectories();
                int len = sonDir.Length;
                for (int i = 0; i <= len - 1; i++)
                {
                    str = "";

                    nodeCount = getFatherCount(sonDir[i], root);
                    for (int k = 0; k < nodeCount; k++)
                    {
                        str += empty;
                    }
                    str += str + splitString + sonDir[i].Name;

                    if (!sonDir[i].Parent.FullName.Equals(root.FullName))
                    {
                        if (nodeCount != 0)
                        {
                            string tmpStr = "";
                            for (int j = 0; j < nodeCount; j++)
                            {
                                int index = -1;
                                tmpStr += empty;
                                index = tmpStr.Length;
                                if (j == 0) index = 0;
                                if (j > 1) index = index + (j - 1) * 2;
                                str = str.Insert(index, insertString);
                                str = str.Remove(index + insertString.Length, insertString.Length);
                            }
                        }
                    }
                    Console.WriteLine(str);
                    fileStr += str + "\n";
                    showTree(sonDir[i].FullName);
                }
                if (showFile)
                {
                    FileInfo[] fSonDir = dirDirctory.GetFiles();
                    len = fSonDir.Length;
                    for (int i = 0; i <= len - 1; i++)
                    {
                        str = "";

                        nodeCount = getFatherCount(fSonDir[i].Directory, root);
                        for (int k = 0; k < nodeCount; k++)
                        {
                            str += empty;
                        }
                        str += str + splitString +"> "+ fSonDir[i].Name;

                        if (!fSonDir[i].Directory.FullName.Equals(root.FullName))
                        {
                            if (nodeCount != 0)
                            {
                                string tmpStr = "";
                                for (int j = 0; j < nodeCount; j++)
                                {
                                    int index = -1;
                                    tmpStr += empty;
                                    index = tmpStr.Length;
                                    if (j == 0) index = 0;
                                    if (j > 1) index = index + (j - 1) * 2;
                                    str = str.Insert(index, insertString);
                                    str = str.Remove(index + insertString.Length, insertString.Length);
                                }
                            }
                        }

                        Console.WriteLine(str);
                        fileStr += str + "\n";
                    }

                }
            }
            catch (Exception) { }
        }
        /// <summary>
        /// 获取父节点的数目
        /// </summary>
        /// <param name="myInfo"></param>
        /// <param name="root"></param>
        /// <returns></returns>
        private static int getFatherCount(DirectoryInfo myInfo, DirectoryInfo root)
        {
            int i = 0;
            DirectoryInfo father = myInfo.Parent;
            while (father != null && !father.FullName.Equals(root.FullName))
            {
                father = father.Parent;
                i++;
            }
            return i;
        }

        public static void writeFile(string fileName)
        {
            File.WriteAllText(fileName, fileStr);
        }
        /// <summary>
        /// test main method
        /// </summary>
        public static void test()
        {
            Console.ForegroundColor = ConsoleColor.White;
            Console.BackgroundColor = ConsoleColor.Black;
            Console.Title = "c# dos Tree";
            Console.WriteLine("请你输入要显示的目录");
            string inputString = Console.ReadLine();
            //FileTree.showFile = true;
            if (inputString.Trim().Length > 0)
            {
                showTree(inputString);
            }
            writeFile("d:\\12.txt");
            Console.WriteLine("按任意键退出.....");
            Console.Read();
        }

    }

}

分享到:
评论

相关推荐

    C#执行DOS命令行完美demo

    本代码演示通过执行DOS命令并返回结果。 特点1:支持启动子进程 特点2:解决由于命令或者子进程阻塞的情况 特点3:可关闭子进程 特点4:设置命令或进程默认超时时间

    C#资源库-binarytree

    标题"C#资源库-binarytree"指的是一个使用C#编程语言实现的二叉树数据结构的代码库。在软件开发中,二叉树是一种基础且重要的数据结构,它由节点构成,每个节点最多有两个子节点,通常称为左子节点和右子节点。这种...

    C# Winform Tree 使用示例

    在C# Winform开发中,Tree控件是一个非常常见的组件,用于展示层次化的数据结构,如文件系统、组织架构等。本示例着重讲解如何在Winform应用中使用Tree控件进行子节点的新增、编辑、删除、升级、降级以及排序等操作...

    C#中运行DOS命令并且隐藏DOS界面

    ### C#中运行DOS命令并且隐藏DOS界面 在C#编程中,有时我们需要执行一些DOS命令来完成特定的任务,比如系统监控、网络测试等。然而,在执行这些命令时,我们通常不希望看到DOS窗口弹出,因为这会干扰用户的视觉体验...

    c# winfrom tree控件使用

    在C# WinForm开发中,Tree控件是一个非常常见的组件,用于展示层次化的数据结构,如文件系统、组织结构等。本篇文章将深入探讨如何在WinForm应用中使用Tree控件,以及如何实现鼠标拖动Panel的功能。 首先,让我们...

    C#模拟Dos命令

    本资源涉及的主题是"C#模拟Dos命令",这意味着它提供了一个利用C#语言来实现对DOS命令(也称为命令行或命令提示符命令)的操作。DOS命令是早期操作系统MS-DOS和后来的Windows版本中的命令行工具,用于执行各种系统...

    C#执行dos命令

    在.NET框架中,C#是一种常用的编程语言,它支持与操作系统进行交互,包括执行DOS(磁盘操作系统)命令。本文将深入探讨如何在C#中实现这一功能,以及如何设计一个用户界面来输入和显示DOS命令的结果。 首先,执行...

    C# 实现的实时获取DOS输出结果程序

    实时获取DOS的输出结果,显示在C#窗口中。 为了避免阻塞主线程,把执行过程放在一个新的Thread中,防止了DOS执行中,C#窗口“假死”现象。 网上有个管道实现DOS输出的程序,没看懂,也不能编译,却被各网站,很多...

    Huffman Tree (C#)

    哈夫曼树(Huffman Tree),也称为最优二叉树,是数据压缩中的一种关键算法,主要用于构建哈夫曼编码。在C#编程语言中实现哈夫曼算法,可以高效地处理字符频率统计并生成相应的编码,从而实现数据的压缩。 哈夫曼...

    C#多线程ping和DOS工具

    本程序采用VS2010软件开发,用的是C#语言,提供源码,主要功能如下 1, 可持续ping 1个IP地址或多个IP地址,可选择记录在指定的文件或自动生成文件记录或不记录。可查看IP什么时候丢包。保存的文件的路径也会做相应...

    c# combox tree

    本文将深入探讨“C# ComboBox Tree”这一技术,它是将传统ComboBox的功能与Tree控件的分层展示特性相结合,以实现更复杂的下拉选择效果。 ComboBox通常是一个输入框,它允许用户从中选择一个预定义的选项,或者手动...

    基于JavaScript和C#的FamilyTree家谱电子化项目设计源码

    本项目是基于JavaScript和C#的FamilyTree家谱电子化项目设计源码,包含290个文件,其中包括77个DLL文件、30个XML文件、28个JavaScript文件、25个Nupkg文件、24个XDT文件、21个CS文件、12个XML文件、12个PS1文件和9个...

    C#执行Dos命令项目源代码

    在.NET框架中,C#是一种常用的编程语言,用于构建各种应用程序,包括控制操作系统层面的功能,如执行DOS命令。这个项目源代码展示了如何利用C#来实现这一目标,特别是通过多线程技术和异步处理来优化性能和用户体验...

    c#使用HtmlParser建立文档树 DomTree

    关于`DomTree`这个文件名,这可能是保存了使用HtmlParser解析后的DOM树的文件。在实际开发中,你可能需要将DOM树序列化为XML或JSON以便存储和传输。你可以使用HtmlDocument的`Save`方法将其写入文件: ```csharp ...

    c#关机程序(dos)

    在这个特定的案例中,"c#关机程序(dos)"指的是利用C#编写的一个小程序,它可以调用DOS(Disk Operating System)命令来实现系统的定时关机、即时重启和注销功能。DOS虽然在现代操作系统中不再作为主要界面,但它...

    c#winform运行DOS指令,隐藏命令窗口

    在C# WinForm应用中,有时我们需要执行DOS(DOS是早期Microsoft操作系统中的命令行接口,现在通常指的是CMD命令提示符)指令,但不希望显示命令行窗口。本篇文章将详细讲解如何实现这一功能。 首先,我们需要了解C#...

    FPTree 的java和C#实现

    在Java和C#中实现FPtree,我们需要考虑以下步骤: 1. **数据预处理**:首先,需要对原始数据进行预处理,包括读取事务数据、计算项的支持度,并找出频繁项集。 2. **构建FPtree**:对于每个频繁项,按照项的顺序将...

    c#执行DOS命令

    在C#编程中,执行DOS命令,也称为命令行命令或者系统命令,是一种与操作系统交互的方式。这通常涉及到使用`System.Diagnostics.Process`类来创建一个新的进程并执行外部程序,如命令解释器(如cmd.exe),进而运行...

    C#调用DOS命令方法

    本文将深入探讨如何使用C#来调用DOS(Disk Operating System)命令,这对于执行系统级操作、脚本执行或与底层系统交互至关重要。 ### C#调用DOS命令的方法 C#中调用DOS命令主要通过`System.Diagnostics.Process`类...

    C#调用DOS命令。Process类的用法

    在.NET框架中,C#提供了一种方便的方式来与操作系统交互,包括执行DOS命令,这就是通过使用`System.Diagnostics.Process`类。本篇文章将详细介绍如何利用`Process`类在C#中调用DOS命令,以及相关的核心概念和步骤。 ...

Global site tag (gtag.js) - Google Analytics