0

ファイルをディレクトリにコピーして、特定の形式に名前を変更したい。ただし、ファイル名がすでに存在する場合は、ファイル拡張子の前に{1}、{2}、または{3}を追加する必要があります。

私のコードはファイルの名前を変更してコピーし、filename.pdfなどの目的の形式に名前を付けました。重複がないかチェックすると、filename1.pdfに名前が変更されました。しかし、もう一度コピーしようとすると、「ファイルはすでに存在します」というエラーが表示されましたが、filename02.pdfという名前を付けたいと思いました。

plsは誰かが私を助けることができます。

これが私がこれまでに書いたコードです。

    {
        string fileSource, filesToCopy, target, nextTarget;

        string sourceDir = @"C:\HCP_PDFs";            

        string destinationDir = @"C:\RenamedHcpPdfs";

        DirectoryInfo di = new DirectoryInfo(destinationDir);

        // create the directory if it dosnt exist

        if (!Directory.Exists(destinationDir))
        {
            Directory.CreateDirectory(destinationDir);
        }

        foreach (string myFiles in lstBoxFilenames.Items)
        {

            filesToCopy = myFiles;
            fileSource = Path.Combine(sourceDir, filesToCopy);         

            //Extract only HCP Name by splitting , removing file Extension and removing HCP ID 
            string hcp = filesToCopy.Split('_')[0];
            string hcpCd = filesToCopy.Split('_')[1];
            string hcpID = filesToCopy.Split('_')[2];
            string hcpName = String.Format((filesToCopy.Split('_')[3]).Replace(".pdf", ""));           

            //combine the HCP ID, HCP name and date                                                
            target = Path.Combine(destinationDir, hcp + "{" + hcpCd + "~" + hcpID + "}" + hcpName + "{2013_03_14}" + ".pdf");

            // if file exists in directory then rename and increment filename by 1
            int i = +1 ;

            nextTarget = Path.Combine(destinationDir, hcp + "{" + hcpCd + "~" + hcpID + "}" + hcpName + "{2013_03_14}" + i + ".pdf");

            if (File.Exists(target))
            {
                File.Copy(fileSource, nextTarget);
                break;
            }

            //if file does not exist, rename              
            else
            {
                File.Copy(fileSource, target);
            }          
        }            
    }
4

2 に答える 2

0

これを行う

while(File.Exists(target)){i ++;}

次に、ターゲットパスを宣言します。

于 2013-03-26T16:55:47.877 に答える
0

これを試して :

string target = Path.Combine(destinationDir, hcp + "{" + hcpCd + "~" + hcpID + "}" + hcpName + "{2013_03_14}.pdf");
while(File.Exists(target))
        {
            i++;
            target = Path.Combine(destinationDir, hcp + "{" + hcpCd + "~" + hcpID + "}" + hcpName + "{2013_03_14}" + i + ".pdf");

        }

File.Copy(fileSource, target);
break;
于 2013-03-27T11:06:52.130 に答える