时间:2021-05-19
用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# 路径访问被拒绝内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
win10系统点开c盘中的文件却弹出提示访问被拒绝,此问题想必大家都有遇到过。想要解决win10c盘文件访问被拒绝的问题也不难,只要添加一些管理员权限即可,听起
1:授权:无法验证对路径的访问解决方法:iis7无法验证对路径的访问1、打开IIS7管理器,鼠标单击定位到出现了这个错误的网站。2、在IIS7管理器的右边,选择
本地数据库连接服务器数据库报1045,如何解决?这个意思是说:用户“root”@本地主机的访问被拒绝解决方案:1.找到MySQL安装路径下的my.ini文件,用
本文实例讲述了C#中winform使用相对路径读取文件的方法。分享给大家供大家参考。具体分析如下:目录结构如下图所示:方法一:由于生成的exe文件在bin\de
1如何在JavaScript访问C#函数?2.如何在JavaScript访问C#变量?3.如何在C#中访问JavaScript的已有变量?4.如何在C#中访问J