我在这个问题上已经阅读了很多答案,但没有一个对我有帮助。 现在,我已经有5年了,我有C#而且显然我已经忘记了这一切。但我喜欢再次使用它来将其用于自动化。所以,这里是我已经拥有的一些代码:
{
string path = @"C:\Users\decraiec\Documents\Client Automated";
//In this folder I will find all my XML files that I just want to load in a textbox
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//create a way to read and write the files
//go get the files from my harddrive
StreamReader FileReader = new StreamReader(path);
//make something readable for what you have fetched
StreamWriter FileWriter = new StreamWriter(textBox1.ToString());
int c = 0;
while (c == FileReader.Read())
{
string load = FileReader.ReadToEnd();//read every xmlfile up to the end
string stream = FileWriter.ToString();//make something readable
}
try
{
textBox1.Text = FileWriter.ToString();//what you have made readable, show it in the textbox
FileWriter.Close();
}
finally
{
if (FileReader != null)
{ FileReader.Close(); }
}
if (FileWriter != null)
{ FileWriter.Close(); }
}
}
如果我像这样运行这段代码,我会得到:
An unhandled exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll
Additional information: Access to the path 'C:\Users\decraiec\Documents\Atrias Automated' is denied.
虽然我希望看到文本框中列出的所有XML文件都可以点击(但我需要插入可点击的代码) 我一直在寻找我的文件夹和子文件夹和文件,我确实拥有管理权限。关于[mscorlib.dll]我不知道在哪里可以找到它。
现在,如果我将StreamReader包装在use ( var....;)
VS中,则无法识别它(单词下面的红线),表示我缺少对象的实例或其他问题(只是试图粘贴)事情在一起)。
有人可以试着让我朝着正确的方向前进吗?
答案 0 :(得分:0)
我认为你的路径是一个目录,而不是一个文件。这里解决了几乎完全相同的问题:Question: Using Windows 7, Unauthorized Access Exception when running my application
您可以做的是在路径上创建一个DirectoryInfo
对象,然后在其上调用GetFiles
。例如:
DirectoryInfo di = new DirectoryInfo(directoryPath);
Foreach(var file in di.GetFiles())
{
string pathToUseWithStreamReader = file.FullName;
}
答案 1 :(得分:0)
您需要使用Directory.GetFiles来获取驻留在" Client Automated"中的任何文件。文件夹,然后遍历它们并将每个文件加载到流中。
var files = Directory.GetFiles(path);
foreach (var file in files)
{
var content = File.ReadAllText(file);
}
您可以在此处阅读更多内容:
https://msdn.microsoft.com/en-us/library/07wt70x2(v=vs.110).aspx
另外 - 通常,在处理这样的文件或目录时,在使用它们之前以编程方式检查它们是否存在是一个好主意。你可以这样做:
if (Directory.Exists(path))
{
...
}
或使用文件:
if (File.Exists(path))
{
...
}