生成新文件路径无法正常工作

时间:2016-07-19 14:20:40

标签: c# string filepath

我正在尝试获取文件.fdf,使用外部命令将其转换为另一种格式.g。从那里,我试图将源FDF移动到备份文件夹,将g文件移动到临时文件夹中。

要做到这一点,我正在使用这部分代码:

private void populateTable(string[] paths)
    {
        string fdf_g = System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "Local\\FindReplace\\Bin\\fdf_g.exe";
        string g_fdf = System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "Local\\FindReplace\\Bin\\g_fdf.exe";
        System.Collections.Generic.List < string > gFiles = new System.Collections.Generic.List<string>();
        foreach (string file in paths)
        {
            System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
            startInfo.FileName = fdf_g;
            startInfo.Arguments = file;
            System.Diagnostics.Process.Start(startInfo);
            System.IO.File.Copy(file, System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "Local\\FindReplace\\BackupFDF\\" + System.IO.Path.GetFileName(file));
            System.IO.File.Move("FOX_" + System.IO.Path.GetFileName(file).Replace(".fdf",".g"), System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "Local\\FindReplace\\Temp\\" + "FOX_" + System.IO.Path.GetFileName(file).Replace(".fdf", ".g"));
            gFiles.Add(System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "Local\\FindReplace\\Temp\\" + "FOX_" + System.IO.Path.GetFileName(file).Replace(".fdf", ".g"));
        }
        foreach (string file in gFiles)
        {
            System.IO.StreamReader gFile = new System.IO.StreamReader(file);
            string line = "";
            while ((line = gFile.ReadLine()) != null)
            {
                foreach (string template in templates)
                {
                    if (line.Contains(template) && !templatesInSelection.Contains(template))
                    {
                        templatesInSelection.Add(template);
                    }
                }
            }
        }
        findReplaceGrid.AutoGenerateColumns = false;
        findReplaceGrid.DataSource = templatesInSelection;
    }

我检查过abd转换工作正常。但是,该程序在读取行中引发了异常:

System.IO.File.Move("FOX_" + System.IO.Path.GetFileName(file).Replace(".fdf",".g"), System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "Local\\FindReplace\\Temp\\" + "FOX_" + System.IO.Path.GetFileName(file).Replace(".fdf", ".g"));

除了:

Additional information: Could not find file 'C:\Users\James.Hughes\Source\Repos\Find-and-Replace-Symbols\Find and Replace Symbols\bin\Debug\FOX_18_83_COD_002.g'.

转换实用程序使用此格式FOX_%origName%.g重命名文件,因此对原始文件路径进行字符串操作以获取新名称。

我无法理解的是,当它应该在appdata中查找时,它试图访问C:\Users\James.Hughes\Source\Repos\Find-and-Replace-Symbols\Find and Replace Symbols\bin\Debug\FOX_18_83_COD_002.g'

我完全不知所措,所以任何帮助都会受到赞赏!

1 个答案:

答案 0 :(得分:1)

System.IO.File.Move有两个参数:sourceFileNamedestinationFileName。您没有指定sourceFile的路径,因此它在当前工作目录(bin / Debug)中查找它。尝试指定文件实际位置的路径。

File.Move documentation