【问题标题】:How to Move File and Rename it in C#, after receiving it from the server?从服务器接收到文件后,如何在 C# 中移动文件并重命名?
【发布时间】:2013-10-22 16:53:29
【问题描述】:

我正在尝试移动和重命名从我的 TCP 服务器接收到的文件。

我的移动和重命名代码:

 *//My sourcePath*
 static string myServerfile = @"C:\Users\me\Documents\file_client\bin\Debug\test1.txt";
 *//My destinationPath*
 static string myFile = @"C:\test\inbox\JobStart.txt";

收到文件后我会这样做:

          fs.Close ();
          serverStream.Close ();
                File.Move(myServerfile, myFile);
                Console.WriteLine("Moved");
            } 
            catch (Exception ex) 
            {
                Console.WriteLine ("Cannot be DONE!");  
            }

但是当它到达File.Move(myServerfile, myfile1);时总是抛出异常“无法完成”

我试过这个: Console.WriteLine(ex.ToString());

结果: System.IO.IOException: 文件已存在,无法创建。

我做错了什么?

【问题讨论】:

  • “ex”中的实际异常是什么?这将告诉您移动失败的原因。这可能是一个权限问题,因为您要将文件从用户区域移动到访问可能受到限制的地方。
  • catch 中添加Console.WriteLine (ex.ToString()); 并告诉我们会产生什么。
  • @Baldrik 是对的,向我们展示真正的错误消息。每台机器上都有这些本地路径吗?如果您尝试从客户端访问服务器的 c 盘,则需要网络路径,而不是本地路径。
  • 从服务器获取文件不是问题。该文件在我的本地硬盘上@"C:\" 我正在尝试将文件从一个文件夹移动到另一个文件夹。

标签: c# move file-rename


【解决方案1】:

好像您已经在目标文件夹中有 JobStart.txt 文件。

您可以尝试检查它是否存在,然后尝试replace 或删除该文件然后移动。

if (File.Exists(myFile))
{
    File.Delete(myFile);
}
File.Move(myServerfile, myFile);

【讨论】:

  • @RamHS - 请记住,只有在知道确切的异常消息后才能解决问题,因此,无论何时遇到类似问题,请务必包含该信息。此外,您可能已经意识到,隐藏实际异常消息的通用“不起作用”消息更有害而不是有用。用户当然不想看到那堵“丑陋”的文字墙,但对于作为开发人员的你来说,这些信息是最有价值的,所以不要对自己隐藏它。 ^_^
  • @Corak 感谢您的建议。是的,我没有这样做是一个错误,但你只能通过犯错来学习。以后我会采纳你的建议的。 :)
【解决方案2】:

试试:

File.Move(@"C:\SAM.txt", @"C:\New Folder\SAM_newName.txt");

如果成功,第一个文件将不再存在。如果不成功,操作将被终止——磁盘上不会有任何改变。我建议尝试使用它,抓住它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-29
    相关资源
    最近更新 更多