2016-06-07 100 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)) 
        { 
        } 
    } 
    
相关问题