Я получаю сообщение об ошибке Доступ к пути... отрицается при попытке прочитать файлы по указанному пути. Код, демонстрирующий ошибку, приведен ниже:
string path = "D:\\Study\\Прога 4 семестр\\Курсач\\tests";
StreamReader sr = new StreamReader(path);
while(!sr.EndOfStream)
{
string s = Path.GetFileNameWithoutExtension(path);
listBox1.Items.Add(s);
}
sr.Close();
Что именно не так с кодом, что ошибка возникает? Как достичь своей цели?
Используйте Directory.EnumerateFiles, чтобы получить все файлы в каталоге, а затем проецировать каждый путь к файлу:
var names = Directory.EnumerateFiles(path)
.Select(f => Path.GetFileNameWithoutExtension(f));
Или даже более короткий путь:
Directory.EnumerateFiles(path).Select(Path.GetFileNameWithoutExtension);
К сожалению, вы используете неправильный синтаксис. StreamReader
будет читать файл, он не будет извлекать файл. Вам следует использовать функциональность Directory
из System.IO
.
Пример:
string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string[] files = Directory.GetFiles(path);
foreach(string item in files)
Console.WriteLine(item);
Это фактически приведет к загрузке файлов.
Вторичный пример:
var path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var file = Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories)
.Select(Path.GetFileName);
В Microsoft Developer Network есть несколько потрясающих статей по различным подходам для обработки файлов или каталогов из системы.
Вы можете использовать Directory
который имеет метод GetFiles(String) (+ 2 overloads)
для перечисления и обработки файлов в старых версиях.NET Framework.
string path = "D:\\Study\\Прога 4 семестр\\Курсач\\tests";
string[] fileNames = Directory.GetFiles(path);
for(int i = 0; i < fileNames.Length; i++)
{
string fileName = Path.GetFileNameWithoutExtension(path + "\\" + fileNames[i]);
listBox1.Items.Add(fileName);
}
Directory.EnumerateFiles
.