2013-04-24 193 views
0

我需要查找目錄中的所有文件和所有子文件夾。我正在省略FtpWebRequest。這是我迄今爲止所寫的內容:讀取目錄中子文件夾中的文件c#streamreader

private string[] fileList() { 

    StringBuilder result = new StringBuilder(); 
    WebResponse response = null; 
    FtpWebRequest reqFtp = null; 

    //makes request to ftp server 

    StreamReader reader = new StreamReader(response.GetResponseStream()); 
    string line = reader.ReadLine(); 

    //reads everything in directory but does not open the subfolders  
    while (line != null) 
    { 
     result.Append(line); 
     result.Append("\n"); 
     line = reader.ReadLine(); 
    } 

    result.Remove(result.ToString().LastIndexOf('\n'); 
    return result.ToString().Split('\n'); 
} 

這會顯示指定目錄內的所有文件和文件夾。但是,我的問題是:如何讀取該目錄內每個子文件夾中的文件?

有沒有辦法檢測到我已經到達一個文件夾,以便我可以將路徑保存爲字符串[]中的索引,並繼續閱讀,直到沒有更多的文件夾?

我的意圖是覆蓋本地計算機上的每個文件,並找到從Ftp服務器讀取的文件。

+0

以遞歸方式列出目錄中的文件:http://stackoverflow.com/questions/929276/how-to-recursively-list-all-the-files-in-a-directory-in-c – tnw 2013-04-24 18:12:22

回答

1

當你有一個文件和/或目錄的列表後,你將不得不執行一個新的ftp請求來獲取列表中的項目。例如,如果我請求目錄的內容並獲取文件列表,則需要遍歷該列表,爲每個文件發出請求。然後在循環中覆蓋您的本地副本。你將基本上處理它,就像你本地文件只使用一個ftp請求並讀取你通常打開文件並讀取流的流。

此問題顯示如何遞歸獲取當前目錄和子目錄中的所有文件。 How to recursively list all the files in a directory in C#?

如果您位於同一個域中,則可以將UNC路徑與正常的目錄/文件對象一起使用,並完全放棄ftp請求。

+0

對於每個文件是不同的(以字節爲單位),我需要提出一個新的請求?這對我來說並不合適。 – avidprogrammer 2013-04-24 18:22:25

+0

@avidprogrammer您的流是dir的內容,而不是文件的內容。如果是,你的循環會讀取文件內容。所以是的,你必須爲每個文件打開一個新的流。當您讀取本地硬盤上的文件時,是否可以將它們全部包裝到一個流中?同樣如此。 – evanmcdonnal 2013-04-24 18:26:18

相關問題