2016-06-07 51 views
0

我想從DataGridView導出到文本文件,但我得到以下錯誤:我想從DataGridView導出到文本文件,但我得到的錯誤

An unhandled exception of type 'System.Security.SecurityException' 
occurred in mscorlib.dll 

Additional information: Request for the permission of type 
'System.Security.Permissions.FileIOPermission, mscorlib, 
Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. 

這是我的代碼:

 const string path = @"d:\export.txt"; 
     if (!File.Exists(path)) 
     { 
      File.Create(path); 
     } 
     TextWriter sw = new StreamWriter(@"d:\export.txt"); 

     int rowcount = dgvSum.Rows.Count; 
     for (int i = 0; i < rowcount - 1; i++) 
     { 

      sw.WriteLine(dgvSum.Rows[i].Cells[0].Value.ToString()); 
     } 
     sw.Close(); 


     MessageBox.Show(@"Text file was created."); 

這是我的try-catch報告: this is my report for try-catch:

this is report after changeing path and filename

這個ID確切一些代碼編輯後: 嘗試 {

  const string path = @"c:\123\123.txt"; 

      using (FileStream fileStream = File.Open(path, 
      FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) 
      using (TextWriter sw = new StreamWriter(fileStream)) 

      { 
       int rowcount = dgvSum.Rows.Count; 
       for (int i = 0; i < rowcount - 1; i++) 
       { 
        sw.WriteLine(dgvSum.Rows[i].Cells[0].Value.ToString()); 
       } 
      } 
      MessageBox.Show(@"Text file was created."); 
     } 
     catch (Exception exception) 
     { 
      MessageBox.Show(exception.ToString()); 
      //Console.WriteLine(exception); 
     } 
+0

如果你包裹在你的代碼中的'試穿catch'阻止你應該看到這個問題是有關該文件的權限。 –

+0

那我該如何解決這個問題? – Hooman

+0

您需要檢查您是否有權寫入D:驅動器。 –

回答

-1

在配置文件中添加這一點,我認爲這會爲你工作

+0

哪些代碼? – Hooman

+0

Pramod

+0

我加了這個,但沒有工作! – Hooman

1

的原因System.Security.SecurityException在撥打File.Create方法。它創建文件並在創建的文件上打開FileStream。您沒有關閉由File.Create流打開,因此StreamWriter無法打開第二個。

更改代碼如下:

const string path = @"d:\export.txt"; 
using(FileStream fileStream = File.Open(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) 
using(TextWriter sw = new StreamWriter(fileStream)) { 
    int rowcount = dgvSum.Rows.Count; 
    for(int i = 0; i < rowcount - 1; i++) { 
     sw.WriteLine(dgvSum.Rows[i].Cells[0].Value.ToString()); 
    } 
} 
MessageBox.Show(@"Text file was created."); 
+0

這個鱈魚沒有工作:( – Hooman

+0

@HoomanDaddy任何錯誤 – Agitto

+0

我得到同樣的錯誤 – Hooman

0

試試這個代碼

try 
{ 
    string filepath = @"d:\export.txt" 
    using (TextWriter stream = File.Exists(filepath) ? new StreamWriter(filepath) : new StreamWriter(File.Create(filepath))) 
    { 
     int rowcount = dgvSum.Rows.Count; 
     for(int i = 0; i < rowcount - 1; i++) 
     { 
      stream.WriteLine(dgvSum.Rows[i].Cells[0].Value.ToString()); 
     } 
    } 
} 
catch (Exception) { } 
+0

此代碼也沒有工作太 – Hooman

+0

道歉,更新,並測試爲本地工作 –

+0

沒有這沒有工作:(( – Hooman

0
  1. 右鍵點擊文件 「export.txt到」 - >屬性 - >安全確保你的用戶有寫允許。
  2. 使用using語句內流像

    using (var fileStream = new FileStream(file, FileMode.Open)) 
    { 
        using (var textReader = new StreamReader(fileStream)) 
        { 
        } 
    } 
    
相關問題