我在ANN中有一个项目。首先,我想将图片克隆到可以每次访问的本地目录中,以便进行索引。目录是
@“ D:\ assets \”
对于图像,我正在使用openfiledialog,并且启用了multiselect。
对于容器,我正在使用此LOC:
a:
4
1
2
3
a2:
4
1
2
3
a3:
6
1
2
3
2
terminate called after throwing an instance of 'boost::archive::archive_exception'
what(): unregistered class - derived class not registered or exported
Signal: SIGABRT (Aborted)
整个代码是分开的。第一个用于浏览,第二个用于将图像复制到我第一次提到的目录中。
对于浏览按钮:
> List<string[,]> path = new List<string[,]>();
用于保存图片
List<string[,]> path = new List<string[,]>();
private void btnBrowse_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "File Extention|*.jpg;*.jpeg;*.bmp";
ofd.Multiselect = true;
if(ofd.ShowDialog() == DialogResult.OK)
{
foreach (var filename in ofd.FileNames)
{
imageList.Images.Add(filename, new Bitmap(filename));
var saveFileName = Path.GetFileName(filename);
var saveFileDir = Path.GetDirectoryName(filename);
lvFruit.Items.Add(saveFileName, filename);
string[,] input = new string[,] { {saveFileDir, saveFileName } };
path.Add(input);
}
}
}
图像文件位于D:\ pic,应复制到D:\ assets
错误是:
System.UnauthorizedAccessException:拒绝访问路径'D:\ pic 在System.IO .__ Error.WinIOError(Int32 errorCode,可能是StringFullPath) 在System.IO.File.InternalCopy(String sourceFileName,String destFileName,布尔覆盖,布尔checkHost) 在System.IO.File.Copy(字符串sourceFileName,字符串destFileName,布尔覆盖) 在D:\ Fruit字典\ Fruit字典\ trainForm.cs:第95行的Fruit_Dictionary.trainForm.btnSubmit_Click(对象发送方EventArgs e)处
您知道没有任何许可的原因是什么?
实际上,我已经以管理员身份运行该程序,并且我已经检查了D:\ pic中的许可权并将其更改为具有所有许可权。
基于这个原因,我已经在互联网上寻找和浏览了2天,但是我什么都没存档。任何帮助都会对我完成这个项目有所帮助。
谢谢:)
答案 0 :(得分:-1)
尝试使用一个过程来复制文件
foreach(String ImageOldPath in Paths)
{
try{
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = "C:\\Windows\\system32\\xcopy.exe";
info.Arguments = $"{ImageOldPath LocalPath} "
Console.WriteLine(info.Arguments);
info.UseShellExecute = false;
info.CreateNoWindow = true;
info.WindowStyle = ProcessWindowStyle.Hidden;
Process proc = new Process();
proc.StartInfo = info;
proc.Start();
proc.Dispose();
}catch(Exception e){}
}
更新
ImageOldPath是图像的旧路径,它位于您的foreach statement
本地路径为 appPath