[英]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#中做到這一點?
查看方法:
File.CreateText
(為新創建的文件返回StreamWriter
) TextWriter.WriteLine
(請注意, StreamWriter
派生自TextWriter
) Directory.EnumerateFiles
(避免在單個調用中讀取所有文件-而是允許您使用foreach
遍歷它們) 不要忘記StreamWriter
的using
語句,這樣即使拋出異常,文件句柄也將關閉
嘗試這個:
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.