2013-02-23 80 views
3

試圖從列表中獲取文件大小,然後將結果輸出到文本文件。目前我已經能夠從文件中讀取前半部分的文件,檢查文件是否存在,然後輸出到控制檯和文本文件。從文本文件中獲取文件大小

我是新編程「本週剛剛開始」。這可能是任何簡單的問題,並嘗試,但不能相當得到它的工作

我已經嘗試把這個內部的foreach循環,並試圖讀取路徑,但它不工作。

 DirectoryInfo di = new DirectoryInfo(path); 
     FileInfo[] fiArr = di.GetFiles(); 
     foreach (FileInfo f in fiArr) 

我提前,如果這糟糕的代碼到目前爲止的代碼

static void Main(string[] args) 
    { 

     string[] lines = System.IO.File.ReadAllLines(@"C:\Locations2.txt"); 
     foreach (string path in lines) 
      if (File.Exists(path)) 
       using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Results.txt", true)) 
       { 
        file.WriteLine("File found" + "\t" + path); 
        Console.WriteLine("File found" + "\t" + path); 
       } 


      else 
       using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Results.txt", true)) 
       { 
        file.WriteLine("Does not Exist" + "\t" + path); 
        Console.WriteLine("Does not Exist" + "\t" + path); 
       } 

    } 

三江源,你可以告訴它爲什麼不應該做這樣?

+1

提示:將文件製作/外的for循環開放.... – 2013-02-23 02:19:44

回答

9

你可以得到有關文件的信息 - 包括它的大小 - 與FileInfo

例如

var fileName = @"C:\Locations2.txt"; 
FileInfo fi = new FileInfo(fileName); 
var size = fi.Length; 
Console.WriteLine("File Size in Bytes: {0}", size); 

你上面的代碼放在循環中是正確的概念,只是錯誤的實現。如果您知道要打開的文件名,則無需經過DirectoryInfo.GetFiles路由。直接訪問FileInfo即可。

所以您的代碼會是這個樣子:

static void Main(string[] args) 
{ 

    string[] lines = System.IO.File.ReadAllLines(@"C:\Locations2.txt"); 
    foreach (string path in lines) 
     if (File.Exists(path)) 
      using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Results.txt", true)) 
      { 
       file.WriteLine("File found" + "\t" + path); 
       Console.WriteLine("File found" + "\t" + path); 

       FileInfo fi = new FileInfo(path); 
       var size = fi.Length; 
       file.WriteLine("File Size in Bytes: {0}", size); 
       Console.WriteLine("File Size in Bytes: {0}", size); 
      } 


     else 
      using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Results.txt", true)) 
      { 
       file.WriteLine("Does not Exist" + "\t" + path); 
       Console.WriteLine("Does not Exist" + "\t" + path); 
      } 

} 
+0

這隻會找到一個文件名。在C:\ Locations2.txt裏面是一個位置列表,需要傳遞這些位置來查找這些位置的文件大小,例如在文件locations2.txt中的新行上它將具有「c:\ 1.txt,c :\ 2.txt,c:\ 3.txt「 – Charles 2013-02-23 02:21:19

+0

我不明白你的意思。你能給我們提供一下Locations2.txt裏面的內容嗎?向我們展示一些輸出?請使用這些附加信息修改您的問題。 – 2013-02-23 02:22:03

+0

「c:\ 1.txt,c:\ 2.txt,c:\ 3.txt」新行上的每條路徑 – Charles 2013-02-23 02:23:04