FileNotFoundException但文件存在C# 命名空间备份 公共部分类Form1:Form { 公共表格1() { 初始化组件(); } 私有无效btn\u备份\u单击(对象发送方,事件参数e) { List SourceDir=this.lbox_Sources.Items.Cast().ToList(); 字符串TargetDir=this.tbox\u Target.Text; foreach(SourceDir中的DirectoryInfo目录) { foreach(目录.GetFiles()中的var文件) File.Copy(File.Name,Path.Combine(TargetDir,File.Name),true); } }
当我尝试备份时,它会抛出一个异常,但该文件存在并且可以访问。编程不是很好,因此可能存在一些愚蠢的错误:p似乎需要修改FileNotFoundException但文件存在C# 命名空间备份 公共部分类Form1:Form { 公共表格1() { 初始化组件(); } 私有无效btn\u备份\u单击(对象发送方,事件参数e) { List SourceDir=this.lbox_Sources.Items.Cast().ToList(); 字符串TargetDir=this.tbox\u Target.Text; foreach(SourceDir中的DirectoryInfo目录) { foreach(目录.GetFiles()中的var文件) File.Copy(File.Name,Path.Combine(TargetDir,File.Name),true); } },c#,backup,C#,Backup,当我尝试备份时,它会抛出一个异常,但该文件存在并且可以访问。编程不是很好,因此可能存在一些愚蠢的错误:p似乎需要修改文件。复制行: namespace Backup public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btn_Backup_Click(object sender, EventArgs e) {
文件。复制行:
namespace Backup
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btn_Backup_Click(object sender, EventArgs e)
{
List<DirectoryInfo> SourceDir = this.lbox_Sources.Items.Cast<DirectoryInfo>().ToList();
string TargetDir = this.tbox_Target.Text;
foreach (DirectoryInfo directory in SourceDir)
{
foreach (var file in directory.GetFiles())
File.Copy(file.Name, Path.Combine(TargetDir, file.Name), true);
}
}
我将第一个参数从file.Name
更改为file.FullName
-这将修复异常将file.Name替换为file.Copy中的file.FullName
var targetPath = Path.Combine(TargetDir, file.Name)
File.Copy(file.FullName, targetPath , true);
在尝试备份时文件是否正在使用?另外,使用file.Exist()
和Breakpoints
时,您看到的确切例外情况是什么?还可以将Path.Combine(TargetDir,file.Name)
存储在字符串变量中,以便更好地调试。尝试file.Exists(Path)检查文件是否存在并提供结果。否则,您可以尝试是否直接在代码中使用路径(而不是通过输入框)。this.lbox\u Sources.Items
@LeiYangforeach(SourceDir中的DirectoryInfo目录)的内容是什么
那么为什么不使用file.FullName
@LeiYang我同意,file.FullName
在这里更好
foreach (var file in directory.GetFiles())
File.Copy(file.FullName, Path.Combine(TargetDir, file.Name), true);