2

FULLNAMEではなく、サブフォルダー名をデータテーブルの別の列に取得しようとしています。助けてください。

protected void Page_Load(object sender, EventArgs e) {
    DataTable ReportsDT = new DataTable("ReportsDT");
    ReportsDT.Columns.Add("Name");
    ReportsDT.Columns.Add("FolderName");
    DirectoryInfo DirInfo = new DirectoryInfo(Server.MapPath("Reports"));
    DataRow ReportDTRow = ReportsDT.NewRow();
        foreach (FileInfo fi in DirInfo.GetFiles("*.*", SearchOption.AllDirectories)) {
            ReportDTRow = ReportsDT.NewRow();
            ReportDTRow["Name"] = fi.Name;
            ReportDTRow["FolderName"] = fi.FullName;
            ReportsDT.Rows.Add(ReportDTRow);  
        }
}
4

3 に答える 3

3

DirectoryInfo特定のディレクトリに関する情報を取得するために使用できます。FileInfo次のインスタンスにコピーが提供されていますfi.Directory

foreach (FileInfo fi in DirInfo.GetFiles("*", SearchOption.AllDirectories)) {
    ReportDTRow = ReportsDT.NewRow();  
    ReportDTRow["Name"] = fi.Name;  
    ReportDTRow["FolderName"] = fi.Directory.Name;                   
    ReportsDT.Rows.Add(ReportDTRow);  
}
于 2013-01-11T20:52:31.853 に答える
0

私はあなたが探していると信じています

ReportDTRow["FolderName"] = fi.Directory.Name;

パス区切り文字で文字列を分割して自分で解析することもできますが、私があなたの望むものを理解していると仮定すると、上記はうまく機能するはずです。

于 2013-01-11T20:57:22.947 に答える
0

以下のサンプルコードを参照してください。

string[] folders = fi.FullName.Split('\\');
string subFolderName = folders[folders.Length - 2];
于 2013-01-11T20:53:49.493 に答える