详解C#对路径...的访问被拒绝解决过程

 更新时间:2020年12月29日 11:22:47   作者:Mr.Emiya  
这篇文章主要介绍了详解C#对路径...的访问被拒绝解决过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

用C#想写一个直接将数据库查询得到的datatable,直接导出为csv格式的文件,拷贝到导出的操作类后,一直catch到的错误提示是对路径的泛微被拒绝,一直排查原因,发现原来:FileStream(path, FileMode.OpenOrCreate,FileAccess.ReadWrite),path处所读取的字符串必须包含文件名称以及格式。现在贴完整代码,以供帮助到像我一样的初学者。

  private void button1_Click(object sender, EventArgs e)
    {
      System.IO.StreamReader st;

//由于我的查询语句较长,采用了读取txt文本的方式后做查询操作。
      st = new System.IO.StreamReader(Application.StartupPath + "\\SQL2.txt", System.Text.Encoding.Default);
   
      string stingsql=st.ReadToEnd();
      st.Close();

      textBox1.Text = stingsql;
      DataTable dt = new DataTable();
      dt = bc.QueryCommand(stingsql);
   
      string filepath = @"F:\病案导出备份\患者统计表.csv";//此处必须为路径加文件名称,否则
      ImportToCSV(dt, filepath);
    }

    public static void ImportToCSV(DataTable dt, string filepath)
    {
      FileStream fs = null;
      StreamWriter sw = null;
      try
      {
        fs = new FileStream(filepath, FileMode.Create, FileAccess.Write);
        sw = new StreamWriter(fs, Encoding.Default);
        string head = "";
        //拼接列头
        for (int cNum = 0; cNum < dt.Columns.Count; cNum++)
        {
          head += dt.Columns[cNum].ColumnName + ",";
        }
        //csv文件写入列头
        sw.WriteLine(head);
        string data = "";
        //csv写入数据
        for (int i = 0; i < dt.Rows.Count; i++)
        {
          string data2 = string.Empty;
          //拼接行数据
          for (int cNum1 = 0; cNum1 < dt.Columns.Count; cNum1++)
          {
            data2 = data2 + "\"" + dt.Rows[i][dt.Columns[cNum1].ColumnName].ToString() + "\",";
          }
          bool flag = data != data2;
          if (flag)
          {
            sw.WriteLine(data2);
          }
          data = data2;

        }
        string msg = "数据被成功导出到:" + filepath;
        MessageBox.Show(msg);
      }
      catch (Exception ex)
      {
        // logger.Error("导出csv失败!" + ex.Message);

        MessageBox.Show("导出失败" + ex.Message);
        return;
      }
      finally
      {
        if (sw != null)
        {
          sw.Close();
        }
        if (fs != null)
        {
          fs.Close();
        }
        sw = null;
        fs = null;
      }
    }

示例2

问题代码:

 private bool GetChannelInfo()
 {
      comCheckWindow.LoadCheckResult("准备加载项目通道信息", Color.FromName("Green"));
      XmlDocument proFile = new XmlDocument(); //读取项目配置文件
      proFile.Load(proFilePath);
      XmlNodeList channelList = proFile.SelectSingleNode("Project").ChildNodes;
      if (channelList.Count == 0) return false;
      ......
      return true;
 }

在“proFile.Load(proFilePath)”语句处发生错误,提示对路径…(proFilePath的值)的访问被拒绝。

尝试过将目标文件重新选择路径(从C盘转移到D盘),或提升程序运行权限(在以管理员身份运行Visual Studio的情况下打开项目文件),均无效。

最后检查程序时发现:路径proFilePath的值不正确,运行“proFile.Load(proFilePath)”要求路径proFilePath指向一个确定的XML文件,但此处路径的值为该XML文件所在目录的路径,由于Load函数的参数指向对象类型不匹配,从而导致出错。

到此这篇关于详解C#对路径...的访问被拒绝解决过程的文章就介绍到这了,更多相关C# 路径访问被拒绝内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#程序终极调试实现windbg的时间旅行

    C#程序终极调试实现windbg的时间旅行

    这篇文章主要介绍了C#程序终极调试实现windbg的时间旅行示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Unity 实现贴花效果的制作教程

    Unity 实现贴花效果的制作教程

    有些游戏中的战斗痕迹的效果会通过贴花来实现的,贴花的方式多种多样。而在Unity中,有一种给官方文档提供代码的解决方案。本文将这些代码的基础上做一个绘图的贴花效果,感兴趣的童鞋可以参考一下
    2021-11-11
  • C#入门学习之集合、比较和转换

    C#入门学习之集合、比较和转换

    本文详细讲解了C#中的集合、比较和转换,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • C#创建WebService接口并连接的全过程

    C#创建WebService接口并连接的全过程

    工作时遇到需要请求客户的接口返回数据,要求使用WebService,借此机会记录一下,下面这篇文章主要给大家介绍了关于C#创建WebService接口并连接的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • C# Bitmap图像处理(含增强对比度的三种方法)

    C# Bitmap图像处理(含增强对比度的三种方法)

    本文主要介绍了C# Bitmap图像处理(含增强对比度的三种方法),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • C#中委托和事件在观察者模式中的应用实例

    C#中委托和事件在观察者模式中的应用实例

    这篇文章主要介绍了C#中委托和事件在观察者模式中的应用,需要的朋友可以参考下
    2014-08-08
  • 关于C#执行顺序带来的一些潜在问题

    关于C#执行顺序带来的一些潜在问题

    这篇文章主要给大家介绍了关于C#执行顺序带来的一些潜在问题,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-08-08
  • C# 9.0 特性全面总结

    C# 9.0 特性全面总结

    这篇文章主要介绍了C# 9.0 特性的相关资料,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-02-02
  • C# 将程序添加开机启动的三种方式

    C# 将程序添加开机启动的三种方式

    本文主要介绍了C# 将程序添加开机启动的三种方式,主要包含开始菜单启动,注册表启动项和Windows 计划任务这三种方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • C#判断字符是否为汉字的三种方法分享

    C#判断字符是否为汉字的三种方法分享

    判断一个字符是不是汉字通常有三种方法,第一种用 ASCII 码判断,第二种用汉字的 UNICODE 编码范围判 断,第三种用正则表达式判断,以下是具体方法
    2014-01-01

最新评论