【问题标题】:System.IO.File.Move() doesn't move the file [duplicate]System.IO.File.Move() 不移动文件[重复]
【发布时间】:2022-01-22 01:21:42
【问题描述】:

我正在尝试制作一个简单的 exe,它在打开时会移动到我的文档文件夹中,但是当我打开它时,它并没有这样做,我该怎么办?

string fileName = "installer.exe";
string strExeFilePath = System.Reflection.Assembly.GetExecutingAssembly().Location;
string strWorkPath = System.IO.Path.GetDirectoryName(strExeFilePath);
string sourceFile = System.IO.Path.Combine(sourcePath, fileName);
string destFileMove = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
System.IO.File.Move(sourceFile, destFileMove);

【问题讨论】:

  • “它没有那样做” - 有没有抛出任何错误?
  • "移动自身" - 当应用程序运行时,它的文件将被锁定,并且不能被移动。那么你真正想做的是什么?
  • 如果这就是程序所做的一切,您会在 Windows 应用程序事件日志中找到它无法正常工作的原因。使用调试器诊断异常,注意 try/catch-say-nothing 代码。 stackoverflow.com/a/3133249/17034
  • @JonasH 不正确。您可以移动当前的 exe,因为这只是一个重命名操作。用一个简单的控制台应用程序试一试,你会看到它在可执行文件运行时也能正常工作。
  • @Ortund - 这不是一个有用的评论。

标签: c# visual-studio


【解决方案1】:

File.Move(string, string) 接受 2 个文件名,所以你的第二个参数不正确:你必须传递目标完整文件名,而不是目标文件夹。

如果您想保留以前的文件名,请这样做:

string destFileMove = Path.Combine( 
    Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
    fileName);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-01
    • 2012-08-10
    • 1970-01-01
    • 2016-07-17
    • 2019-02-12
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多