我想复制,重命名并将文件移动到新位置。根据{{3}},以下代码应该这样做:
此示例将文件Test.txt复制到目录TestFiles2和 将其重命名为NewFile.txt。
My.Computer.FileSystem.CopyFile _
("C:\UserFiles\TestFiles\test.txt", _
"C:\UserFiles\TestFiles2", "NewFile.txt", FileIO.UICancelOption.DoNothing)
但是,当我键入此代码时,它只会将“NewFile.txt”参数视为处理覆盖的布尔参数。我认为这是网站上的一个错误。
如果我不能使用“My.Computer.FileSystem.CopyFile”(除非我做错了)复制重命名并移动文件,那么还有更好的方法:
' Rename the file to be copied the name you want it to be in the new location
My.Computer.FileSystem.RenameFile("C:\OriginalFile.txt", "OriginalFileTemporaryName.txt")
' Copy the file to the new location and overwrite if it exists there
My.Computer.FileSystem.CopyFile ("C:\OriginalFileTemporaryName.txt", "C:\UserFiles\TestFiles2", True)
' Rename the original file back to it's original name
My.Computer.FileSystem.RenameFile("C:\OriginalFileTemporaryName.txt", "OriginalFile.txt")
我遇到的问题是,我可能最终将原始文件重命名为原始文件位置中已存在的临时名称。我想避免这种情况。我也不想在目标文件夹中重命名复制的文件,因为我没有看到强制覆盖“My.Computer.FileSystem.RenameFile”的选项
这甚至是一个不错的解决方案吗? 有没有更好的方法呢?
答案 0 :(得分:2)
我认为你有语法错误。您试图将目标文件名作为两个参数 - 目录名和文件名,当您应将两者都作为一个字符串时。
My.Computer.FileSystem.CopyFile ("C:\UserFiles\TestFiles\test.txt", "C:\UserFiles\TestFiles2\NewFile.txt")
像那样。第三个参数可以是布尔值(True / False) - 是否要覆盖目标文件(如果存在)。
如果要首先检查文件是否存在,请查看System.IO.File类,它具有“Exists”方法,该方法接受文件名并返回boolean。它还有一些方法来操作你可以使用的文件而不是FileSystem类,尽管没有性能优势。
答案 1 :(得分:1)
在网站上看起来确实是个错误。但这不应该阻止我们;只需将目录和文件名放入相同的参数:
My.Computer.FileSystem.CopyFile("C:\UserFiles\TestFiles\test.txt", "C:\UserFiles\TestFiles2\NewFile.txt", FileIO.UICancelOption.DoNothing)
(如果你想强制覆盖,请将第三个参数更改为True
。我不知道你可以在同一个电话中覆盖并传递CancelOption.DoNothing
。)