Я работаю над проектом, который представляет собой серию изображений, которые хранятся в одной области памяти (скажем, с помощью карты памяти или загрузки) и распределяет их по их соответствующие папки на основе имени изображения - которые должны соответствовать именам файлов в их соответствующей папке.C# - Доступ к пути запрещен, не удается получить доступ к файлам
У меня есть первые несколько функций кода, написанных для того, чтобы это произошло, и решил проверить его, изменив код, чтобы он выполнял процесс в коллекции файлов в папке «Мои рисунки». Что должно было произойти, так это то, что каждый файл в папке был скопирован в папку AppData под названием «Новые изображения» и добавлен в соответствующий подкаталог или при необходимости создала подкаталог.
Это породило ошибку, указав, что доступ к C:\Users\mark
, хотя он не объяснил, почему и что с этим делать. Я подумал, что это может быть проблемой при доступе к папке «Мои рисунки», поэтому я скопировал изображения в папку «Тестирование изображений» внутри папки AppData (так что теперь программа будет просто передавать файлы между двумя папками в AppData). Произошла одна и та же ошибка, и я не знаю, что делать дальше, я много раз пишу и читаю из файлов в AppData и никогда не сталкивался с этой проблемой. Я также читал различные записи, связанные с этим на этом форуме, но, похоже, не в состоянии получить окончательный ответ с точки зрения того, что делать дальше!
код, который вызывает исключение можно увидеть ниже:
//main folder (Contains sub-folders for each patient)
string rootDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\New Images";
//variables for sub-directories cannot be given at this point as they are created using a part of the image name
string subDirectory;
//string subDirectory = Path.Combine(rootDirectory, imageName.Split('_')[0]);
string imageName;
//string imageName = Path.GetFileName(image)
string shortcutDirectory;
//string shortcutDirectory = My Documents + Subfolder name + file name
//list to hold all strings as bitmap image
List<Bitmap> images = new List<Bitmap>();
public void createDirectory()
{
//create filing construct for all files passed in from machines
//if main folder does not exist in AppData
if (!Directory.Exists(rootDirectory))
{
//create it
Directory.CreateDirectory(rootDirectory);
}
}
public void saveLatestImages()
{
//specific path for My Pictures only
string testImagesPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\Test Images";
//if there is a Pictures folder
if (Directory.Exists(testImagesPath))
{
//get number of files in folder
int fileCount = Directory.GetFiles(testImagesPath).Count();
//more than one file in folder
if (fileCount > 0)
{
//create data structures to store file info
//filePaths holds path of each file represented as a string
string[] filePaths = Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\Test Images");
//for each file in Pictures...
for (int index = 0; index < fileCount; ++index)
{
//get name of image at current index
imageName = filePaths[index];
//separate the part relating to the patient name (everything before (DD/MM/YYYY))
string subSpecifier = imageName.Split('_')[0];
//add to root directory to form subfolder name
subDirectory = Path.Combine(rootDirectory, subSpecifier);
//subdirectory name formulated, check for pre-existing
//subfolder does not exist
if(!Directory.Exists(subDirectory))
{
//create it
Directory.CreateDirectory(subDirectory); //ERROR OCCURS
}
//otherwise, file will be added to existing directory
//take everything from end and folder\file division to get unique filename
string fileName = imageName.Split('\\').Last();
//add this to the existing subDirectory
fileName = Path.Combine(subDirectory, fileName);
//copy the image into the subfolder using this unique filename
File.Copy(imageName, fileName);
//add full filename to list of bitmap images
images.Add(new Bitmap(fileName));
//update the shortcut to the file in the image storage shortcut folder
shortcutDirectory = getShortcut(subSpecifier, fileName);
//delete image at original path (clear folder so images not copied on next load up)
//File.Delete(imageName);
}
}
}
}
Любая помощь в том, где искать следующий будет весьма признателен!
Благодаря Все
Вы добавили разрешения для требуемой папки i.e. C: \ Users \ mark? –
Я понятия не имею, поскольку я сказал, что я новичок в этой ошибке, поэтому я даже не подумал бы что-либо, чтобы противодействовать ей перед рукой! Как я могу добавить разрешения? @AmitSoni – marcuthh