簡體   English   中英

如何移動到另一個文件夾以訪問 C# 中的其他文件

[英]How can I move into another folder to access other files in C#

所以在我的代碼中,我正在編輯文件夾中的 word 文檔,並將這些文件復制到臨時文件夾中,我只是想知道如何訪問臨時文件夾中的這些文件以執行進一步的操作。 這是我的代碼:

 private static void editFieldsTest(string filename)
    {
        if (filename.StartsWith("q") | filename.Contains("cover"))
        {
            Console.WriteLine("\nMoving question files to temp directory\n");

            var destinationFolder = @"temp\";

            var tmp_filename = $"{destinationFolder}{ Path.GetFileName(filename)}";

            try
            {
                File.Copy(filename, tmp_filename, true);

            }
            catch (IOException iox)
            {
                Console.WriteLine(iox.Message);
            }

            int fileLen = filename.Length;
                Console.WriteLine("editing question files...\n");
                string typeOfQuestion = filename.Substring(1, fileLen - 14);
                string timeGiven = filename.Substring(3, fileLen - 14);
                string marks = filename.Substring(5, fileLen - 14);
                string learningOutcome = filename.Substring(7, fileLen - 14);
                //string fifthIndex = filename.Substring(9, fileLen - 9);

                var valuesToFill = new Content(
                    new FieldContent("qnumber", typeOfQuestion),
                    new FieldContent("qmark", marks),
                    new FieldContent("qtime", timeGiven),
                    new FieldContent("learningOutcome", learningOutcome));

                using (var outputDocument = new TemplateProcessor(tmp_filename)
                    .SetRemoveContentControls(true))
                {
                    outputDocument.FillContent(valuesToFill);
                    outputDocument.SaveChanges();
                }
        }
    }

我認為您需要的是 DirectoryInfo 類,根據您的代碼,您可以像這樣打開所需的目錄

var directory = new DirectoryInfo(destinationFolder);

然后,我想,像這樣獲取文件可枚舉集合

var files = directory.EnumerateFiles();

MSDN 上有進一步閱讀的參考

我也可以建議對您的代碼進行一些改進!

private static void editFieldsTest(string filename)
    {
        //By returning early you're reducing nesting and making your code more readable. 
        //Fail fast!
        if (!(filename.StartsWith("q") | filename.Contains("cover"))) 
            return;
        
        Console.WriteLine("\nMoving question files to temp directory\n");

        //Make things const and move them our from your method 
        //But only if you really think that they won't change
        //I suggest moving that const to method signature to improve extensibility
        const string destinationFolder = @"temp\";

        var tmpFilename = $"{destinationFolder}{ Path.GetFileName(filename)}";

        try
        {
            File.Copy(filename, tmpFilename, true);

        }
        catch (IOException iox)
        {
            Console.WriteLine(iox.Message);
        }

        //You can use var to redeem yourself from writing whole type every time
        var fileLen = filename.Length;
        Console.WriteLine("editing question files...\n");
        var typeOfQuestion = filename.Substring(1, fileLen - 14);
        var timeGiven = filename.Substring(3, fileLen - 14);
        var marks = filename.Substring(5, fileLen - 14);
        var learningOutcome = filename.Substring(7, fileLen - 14);
        //string fifthIndex = filename.Substring(9, fileLen - 9);

        var valuesToFill = new Content(
            new FieldContent("qnumber", typeOfQuestion),
            new FieldContent("qmark", marks),
            new FieldContent("qtime", timeGiven),
            new FieldContent("learningOutcome", learningOutcome));

        using (var outputDocument = new TemplateProcessor(tmpFilename)
            .SetRemoveContentControls(true))
        {
            outputDocument.FillContent(valuesToFill);
            outputDocument.SaveChanges();
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM