获取文件名并移动它

时间:2011-03-11 09:19:40

标签: c# .net

string fName = Path.GetFileName(tempPaths[z]);    
if (!File.Exists(subAch + fName))
                            {

                                File.Move(tempPaths[z], subAch + fName);
                                Console.WriteLine("moved!!! from " + tempPaths[z] + " tooooo ");


                            }

tempPaths是包含所有图像文件路径的列表。例如./images/image4.jpg

subAch是一个目录字符串。

我希望获取文件的文件名,然后将它们移动到另一个目录。但是上面的代码我不断收到错误:其他进程正在使用文件。

无论如何都有获取文件名并移动它们的?我尝试过fileStream,但对此感到困惑。

请建议。

谢谢!

3 个答案:

答案 0 :(得分:2)

您的代码应该可以正常工作。你只需要找出锁定文件的人。 我将代码放在try-catch块中的if-block中来处理锁定的文件。 我还建议你使用Path.Combine而不是dir + file。

一件事:您正在检查subAch + tempPaths [z]是否存在,但您正在复制到其他位置; subAch + fName。

答案 1 :(得分:0)

另一个进程正在使用文件意味着。某人/某事已经在使用该文件,因此无法移动它。你总能捕捉错误并移动其他一切吗?

答案 2 :(得分:0)

我使用非理想的方式获取文件名并将文件移到另一个地方。

tempPaths.AddRange(Directory.GetFiles(rawStorePath, filter, SearchOption.AllDirectories));

上面的代码获取文件夹集中所有文件的所有目录。结果是这样的。 tempPaths是一个List。

"./images/glass_numbers_5.jpg"
"./images/G.JPG"
"./images/E.JPG"
"./images/F.JPG"
"./images/glass_numbers_0.jpg"
"./images/C.JPG"
"./images/B.JPG"
"./images/A.JPG"
"./images/D.JPG"
"./images/glass_numbers_7.jpg"

然后我使用循环来获取文件名。

for (int i = 0; i < tempPaths.Count; i++)
                {
                    //Getting the original names of the images
                    int pLength = rawStorePath.Length;
                    string something = tempPaths[i].Remove(0, pLength);
                    if (!_tfileName.ContainsKey(tempPaths[i]))
                    { _tfileName.Add(tempPaths[i], something); }
                }

rawStorePath是目标路径的路径,例如:./ images / tempPath [i]例如:./ images / G.JPG

所以用长度我删除字母并取回文件名。

如果有的话,请告诉我一个理想的方法。

谢谢!