2016-12-30 18 views
-1

テキストファイルの文字列を文字列配列に格納し、データグリッドビューテーブルに移動します。私はそれを行うことができる方法はありますか?フォルダ内の複数のテクスチャファイルを読み込んで各テキストファイルを配列に格納する方法C#

private string[] textfiles = Directory.GetFiles("D:\\UPLOADS", "*.txt") 
           .Select(Path.GetFileName) 
           .ToArray(); 

私は上記の方法を使ってテキストファイルを取得しました。

for (int i = 0; i < excelfiles.Length; i++) 
     { 
      dt.Rows.Add(i, excelfiles[i], File.ReadAllText(textfiles[i]) , "24/12/16", "3.42pm", 837482, "Approve/Reject"); 
     } 

ただし、次のエラーが表示されます。ここでは完全なコードです\ UPLOADS

:私のパスが記載されている

Could not find file 'C:\Program Files (x86)\IIS Express\[2016-12-30] lololololol.xlsm(desc).txt'.

はDです。

protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    private string[] excelfiles = Directory.GetFiles("D:\\UPLOADS", "*.xlsm") 
           .Select(Path.GetFileName) 
           .ToArray(); 
    private string[] textfiles = Directory.GetFiles("D:\\UPLOADS", "*.txt") 
           .Select(Path.GetFileName) 
           .ToArray(); 




    protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     GridView1_SelectedIndexChanged(sender, e); 
    } 

    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     DataTable dt = new DataTable(); 
     dt.Columns.Add("ExcelID", typeof(int)); 
     dt.Columns.Add("excelName", typeof(string)); 
     dt.Columns.Add("excelDescription", typeof(string)); 
     dt.Columns.Add("date", typeof(string)); 
     dt.Columns.Add("time", typeof(string)); 
     dt.Columns.Add("empID", typeof(int)); 
     dt.Columns.Add("firstApproval", typeof(string)); 

     for (int i = 0; i < excelfiles.Length; i++) 
     { 
      dt.Rows.Add(i, excelfiles[i], File.ReadAllText(textfiles[i]) , "24/12/16", "3.42pm", 837482, "Approve/Reject"); 
     } 


     GridView1.DataSource = dt; 
     GridView1.DataBind(); 
    } 

おかげ

+0

を残すことができるので、あなたは、あなたのファイルの内容を取得するために、そのパスを必要としています。何かしようとしましたか? – Steve

+0

お読みください:http://stackoverflow.com/help/how-to-ask – bit

答えて

2

テキストファイルをロードするときは、完全なファイル名からD:\ UPLOADSパスを削除します。したがって、ファイル名の内容を読み取ろうとすると、File.ReadAllTextに与えるパスはありません。

これは、現在のプロセスディレクトリ(... \ IIS Express ...)からそのファイルが存在しない場所を読み込もうとします。

あなたはLINQのSelect部分を除去し、はい、それを行うには多くの方法がある....ただ

private string[] textfiles = Directory.GetFiles("D:\\UPLOADS", "*.txt"); 
1

あなたは、この場合に該当するでしょういくつかのAPIがあります。

Directory.GetFiles()は、フォルダ内のすべてのファイルへのフルパスの配列を返します。

File.ReadAllText()は、ファイルのすべての内容を文字列として返します。

これら2つを使用すると、要求された機能を確実に実装できるはずです。

関連する問題