使用C#无法访问路径如何解决
创始人
2024-12-27 13:22:38
0次

用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函数的参数指向对象类型不匹配,从而导致出错。

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...