簡體   English   中英

創建一個C#方法以將所有文件路徑保存在txt文件中

[英]Create a C# method to save all file paths in a txt file

我想在C#中創建一個void方法,該方法將創建一個txt文件並在計算機上寫入所有文件名的所有路徑。

有一個cmd命令,( dir c:\\ /s /b >c:\\bla.txt ),但是我不想要這樣。

如何在C#中做到這一點?

查看方法:

不要忘記StreamWriterusing語句,這樣即使拋出異常,文件句柄也將關閉

嘗試這個:

void GetFiles()
{
    StreamWriter wr = File.CreateText(Server.MapPath("") + "txt1.text");

    DriveInfo[] drive = DriveInfo.GetDrives();
    for (long count = 0; count < drive.LongLength; count++)
    {
        string[] dir = Directory.GetDirectories(drive.GetValue(count).ToString(), "*", SearchOption.AllDirectories);
        for (long dr = 0; dr < dir.LongLength; dr++)
        {
            string[] file = Directory.GetFiles(dir.GetValue(dr).ToString(), "*", SearchOption.AllDirectories);
            for (long fl = 0; fl < file.LongLength; fl++)
            {
                wr.WriteLine(file.GetValue(fl));
            }
        }
    }
}

代碼如下。 它是在Mac OS X上的Mono上編寫的,因此您需要更改目錄。 另外,如果沒有管理員,請在某些目錄下運行。

class MainClass
{
    public static void Main (string[] args)
    {
        WritePaths("files.txt", "/", true);
    }

    public static void WritePaths(string fileName, string directory, bool recursive)
    {
        try
        {
            string[] files = Directory.GetFiles(directory, "*", SearchOption.AllDirectories);
            using(StreamWriter sw = new StreamWriter(fileName))
            {
                foreach(string file in files)
                {
                    sw.WriteLine(file); 
                }
            }
        }
        catch(Exception ex)
        {
            Console.WriteLine("Exception: " + ex.Message);
        }           
    }
}

基於其他答案,我已經修改了方法以使用較新的Directory.EnumerateFiles 我更喜歡這個版本。

    public static void WritePaths(string fileName, string directory)
    {
        try
        {
            using(StreamWriter sw = new StreamWriter(fileName))
            {
                foreach (string f in Directory.EnumerateFiles(directory, "*", SearchOption.AllDirectories))
                {
                    sw.WriteLine(f);
                }
            }
        }
        catch(Exception ex)
        {
            Console.WriteLine("Exception: " + ex.Message);
        }           
    }

我建議寫一個遞歸方法,盡管它不能是空方法。 我會遍歷給定的路徑說C:。 或使用Drives System.IO類取出所有驅動器,然后傳遞給該方法。 然后,在該方法中,我將迭代並提取目錄和子目錄中的文件名。

有一個cmd命令,( dir c:\\ /s /b >c:\\bla.txt ),但是我不想要這樣。

您不想手動鍵入命令並在Windows控制台中執行它,還是不想使用DIR命令(您想自己在C#中實現)?

如果只需要一個C#程序來為您處理手動鍵入,則可以使用C#啟動一個過程並運行內置的DIR命令。 請參閱Process.Start

Process.Start("cmd", @"/c dir c:\ /s /b >c:\bla.txt");

簡單,易讀,我100%肯定沒有錯誤。 那為什么不呢?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM