You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C#实现文件转移时提示找不到1.jar文件的技术求助

排查C# File.Move找不到文件的问题

嘿,我来帮你搞定这个「找不到1.jar」的问题!咱们一步步来排查:

1. 先搞清楚当前工作目录到底是什么

你用Directory.GetCurrentDirectory()获取的当前目录,可能和你预想的不一样!比如在Visual Studio里调试时,默认工作目录是项目的根目录,而不是bin/Debug或bin/Release的输出目录——如果你的1.jar是放在输出目录里,那就肯定找不到了。

你可以先加一行代码,把当前目录直观地展示出来:

private void button1_Click(object sender, EventArgs e)
{
    string curDir = Directory.GetCurrentDirectory();
    // 弹出窗口显示当前目录,方便排查
    MessageBox.Show($"当前工作目录:{curDir}");
    // ... 剩下的代码
}

2. 别手动拼接路径,用Path.Combine更靠谱

你现在用curDir + @"\1.jar"的方式拼接路径,如果curDir末尾已经有反斜杠(比如C:\MyProject\bin\Debug\),就会变成C:\MyProject\bin\Debug\\1.jar——虽然大部分情况下系统能识别,但这种写法容易出意外。换成Path.Combine是更安全的选择:

// 替换原来的路径拼接代码
string path = Path.Combine(curDir, "1.jar");
string path2 = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Desktop", "2.jar");

直接用Environment.GetFolderPath返回的字符串拼接,比把DirectoryInfo转成字符串更稳妥。

3. 确认1.jar真的在正确的位置

  • 如果是调试阶段:确保1.jar文件被复制到了程序的输出目录(也就是刚才弹窗显示的curDir路径里)。你可以右键项目里的1.jar文件,设置「复制到输出目录」为「始终复制」,这样每次编译都会把文件同步过去。
  • 如果是发布后的程序:把1.jar和exe放在同一个文件夹里,或者手动指定正确的源文件绝对路径。

额外优化:加个文件存在判断

给代码加个前置检查,能更明确地定位问题,避免模糊的报错:

private void button1_Click(object sender, EventArgs e)
{
    string curDir = Directory.GetCurrentDirectory();
    MessageBox.Show($"当前工作目录:{curDir}");
    
    string path = Path.Combine(curDir, "1.jar");
    string path2 = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Desktop", "2.jar");

    if (File.Exists(path))
    {
        File.Move(path, path2);
        MessageBox.Show("文件移动成功!");
    }
    else
    {
        MessageBox.Show($"找不到目标文件:{path}");
    }
}

内容的提问来源于stack exchange,提问作者Batuhan Aksoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 22:58:14