C# Path.Combine的代码示例

通过代码示例来学习C# Path.Combine方法

通过代码示例来学习编程是非常高效的。
1. 代码示例提供了一个具体而直观的学习环境,使初学者能够立即看到编程概念和语法的实际应用。
2. 通过分析和模仿现有的代码实例,初学者可以更好地理解编程逻辑和算法的工作原理。
3. 代码实例往往涵盖了多种编程技巧和最佳实践,通过学习和模仿这些实例,学习者可以逐步掌握如何编写高效、可读性强和可维护的代码。这对于初学者来说,是一种快速提升编程水平的有效途径。


Path.Combine是C#的System.IO命名空间下中的一个方法, 小编为大家找了一些网络大拿们常见的代码示例,源码中的Path.Combine() 已经帮大家高亮显示了,大家可以重点学习Path.Combine() 方法的写法,从而快速掌握该方法的应用。

Path.Combine的代码示例1 - SearchDlssTweaksDlls()

    using System.IO;

        string[] SearchDlssTweaksDlls(string path)
        {
            var dlls = new List();
            foreach (var filename in DlssTweaksDllFilenames)
            {
                try
                {
                    var filepath = Path.Combine(path, filename);
                    if (!File.Exists(filepath))
                        continue;

                    FileVersionInfo fileInfo = FileVersionInfo.GetVersionInfo(filepath);
                    if (fileInfo.ProductName != "DLSSTweaks")
                        continue;

                    dlls.Add(filepath);
                }
                catch
                {
                    continue;
                }
            }
            return dlls.ToArray();
        }
    

开发者ID:emoose,项目名称:DLSSTweaks,代码行数:26,代码来源:Main.cs

在SearchDlssTweaksDlls()方法中,Path的代码示例类中的Combine的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞

Path.Combine的代码示例2 - New()

    using System.IO;

        public void New()
        {
            tempFolder = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
            int tries = 1;
            var baseFolder = tempFolder;
            while (Directory.Exists(tempFolder) && tries < 3)
            {
                tempFolder = $"{baseFolder}_{tries}";
                tries++;
            }
            if (tries >= 3)
                throw new Exception("Failed to create temporary folder");

            Directory.CreateDirectory(tempFolder);
        }
    

开发者ID:emoose,项目名称:DLSSTweaks,代码行数:17,代码来源:Utility.cs

在New()方法中,Path的代码示例类中的Combine的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞

Path.Combine的代码示例3 - HasIssue()

    using System.IO;

        public override IssueType HasIssue(List messages)
        {
            string error;
            try
            {
                if (!RepoMetadata.TryInitialize(this.Tracer, this.Enlistment.DotGVFSRoot, out error))
                {
                    messages.Add("Could not open repo metadata: " + error);
                    return IssueType.CantFix;
                }

                if (!RepoMetadata.Instance.TryGetBlobSizesRoot(out this.blobSizeRoot, out error))
                {
                    messages.Add("Could not find blob sizes root in repo metadata: " + error);
                    return IssueType.CantFix;
                }
            }
            finally
            {
                RepoMetadata.Shutdown();
            }

            string blobsizesDatabasePath = Path.Combine(this.blobSizeRoot, BlobSizes.DatabaseName);
            if (SqliteDatabase.HasIssue(blobsizesDatabasePath, new PhysicalFileSystem(), out error))
            {
                messages.Add("Could not load blob size database: " + error);
                return IssueType.Fixable;
            }

            return IssueType.None;
        }
    

开发者ID:microsoft,项目名称:VFSForGit,代码行数:33,代码来源:BlobSizeDatabaseRepairJob.cs

在HasIssue()方法中,Path的代码示例类中的Combine的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞

Path.Combine的代码示例4 - GetSourceIndex()

    using System.IO;

        private Index GetSourceIndex()
        {
            string indexPath = Path.Combine(this.Enlistment.DotGitRoot, GVFSConstants.DotGit.IndexName);

            if (File.Exists(indexPath))
            {
                Index output = new Index(this.Enlistment.EnlistmentRoot, this.Tracer, indexPath, readOnly: true);
                output.Parse();
                return output;
            }

            return null;
        }
    

开发者ID:microsoft,项目名称:VFSForGit,代码行数:15,代码来源:CheckoutPrefetcher.cs

在GetSourceIndex()方法中,Path的代码示例类中的Combine的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞

Path.Combine的代码示例5 - HandleAllDirectoryOperations()

    using System.IO;

        private void HandleAllDirectoryOperations()
        {
            DiffTreeResult treeOp;
            while (this.diff.DirectoryOperations.TryDequeue(out treeOp))
            {
                string absoluteTargetPath = Path.Combine(this.enlistment.WorkingDirectoryBackingRoot, treeOp.TargetPath);

                if (this.HasFailures)
                {
                    return;
                }

                switch (treeOp.Operation)
                {
                    case DiffTreeResult.Operations.Modify:
                    case DiffTreeResult.Operations.Add:
                        try
                        {
                            Directory.CreateDirectory(absoluteTargetPath);
                        }
                        catch (Exception ex)
                        {
                            EventMetadata metadata = new EventMetadata();
                            metadata.Add("Operation", "CreateDirectory");
                            metadata.Add(nameof(treeOp.TargetPath), absoluteTargetPath);
                            this.tracer.RelatedError(metadata, ex.Message);
                            this.HasFailures = true;
                        }

                        break;
                    case DiffTreeResult.Operations.Delete:
                        try
                        {
                            if (Directory.Exists(absoluteTargetPath))
                            {
                                this.fileSystem.DeleteDirectory(absoluteTargetPath);
                            }
                        }
                        catch (Exception ex)
                        {
                            // We are deleting directories and subdirectories in parallel
                            if (Directory.Exists(absoluteTargetPath))
                            {
                                EventMetadata metadata = new EventMetadata();
                                metadata.Add("Operation", "DeleteDirectory");
                                metadata.Add(nameof(treeOp.TargetPath), absoluteTargetPath);
                                this.tracer.RelatedError(metadata, ex.Message);
                                this.HasFailures = true;
                            }
                        }

                        break;
                    default:
                        this.tracer.RelatedError("Ignoring unexpected Tree Operation {0}: {1}", absoluteTargetPath, treeOp.Operation);
                        continue;
                }

                if (Interlocked.Increment(ref this.directoryOpCount) % NumOperationsPerStatus == 0)
                {
                    EventMetadata metadata = new EventMetadata();
                    metadata.Add("DirectoryOperationsQueued", this.diff.DirectoryOperations.Count);
                    metadata.Add("DirectoryOperationsCompleted", this.directoryOpCount);
                    this.tracer.RelatedEvent(EventLevel.Informational, "CheckoutStatus", metadata);
                }
            }
        }
    

开发者ID:microsoft,项目名称:VFSForGit,代码行数:68,代码来源:CheckoutStage.cs

在HandleAllDirectoryOperations()方法中,Path的代码示例类中的Combine的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞

Path.Combine的代码示例6 - GetCloneRoot()

    using System.IO;

        private string GetCloneRoot(out string fullEnlistmentRootPathParameter)
        {
            fullEnlistmentRootPathParameter = null;

            try
            {
                string repoName = this.RepositoryURL.Substring(this.RepositoryURL.LastIndexOf('/') + 1);
                fullEnlistmentRootPathParameter =
                    string.IsNullOrWhiteSpace(this.EnlistmentRootPathParameter)
                    ? Path.Combine(Environment.CurrentDirectory, repoName)
                    : this.EnlistmentRootPathParameter;

                fullEnlistmentRootPathParameter = Path.GetFullPath(fullEnlistmentRootPathParameter);

                string errorMessage;
                string enlistmentRootPath;
                if (!GVFSPlatform.Instance.FileSystem.TryGetNormalizedPath(fullEnlistmentRootPathParameter, out enlistmentRootPath, out errorMessage))
                {
                    this.ReportErrorAndExit("Unable to determine normalized path of clone root: " + errorMessage);
                    return null;
                }

                return enlistmentRootPath;
            }
            catch (IOException e)
            {
                this.ReportErrorAndExit("Unable to determine clone root: " + e.ToString());
                return null;
            }
        }
    

开发者ID:microsoft,项目名称:VFSForGit,代码行数:32,代码来源:CloneVerb.cs

在GetCloneRoot()方法中,Path的代码示例类中的Combine的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞

Path.Combine的代码示例7 - DehydrateFolders()

    using System.IO;

        private void DehydrateFolders(JsonTracer tracer, GVFSEnlistment enlistment, string[] folders)
        {
            List foldersToDehydrate = new List();
            List folderErrors = new List();

            if (!this.ShowStatusWhileRunning(
                () =>
                {
                    if (!ModifiedPathsDatabase.TryLoadOrCreate(
                            tracer,
                            Path.Combine(enlistment.DotGVFSRoot, GVFSConstants.DotGVFS.Databases.ModifiedPaths),
                            this.fileSystem,
                            out ModifiedPathsDatabase modifiedPaths,
                            out string error))
                    {
                        this.WriteMessage(tracer, $"Unable to open modified paths database: {error}");
                        return false;
                    }

                    using (modifiedPaths)
                    {
                        string ioError;
                        foreach (string folder in folders)
                        {
                            string normalizedPath = GVFSDatabase.NormalizePath(folder);
                            if (!this.IsFolderValid(normalizedPath))
                            {
                                this.WriteMessage(tracer, $"Cannot {this.ActionName} folder '{folder}': invalid folder path.");
                            }
                            else
                            {
                                // Need to check if parent folder is in the modified paths because
                                // dehydration will not do any good with a parent folder there
                                if (modifiedPaths.ContainsParentFolder(folder, out string parentFolder))
                                {
                                    this.WriteMessage(tracer, $"Cannot {this.ActionName} folder '{folder}': Must {this.ActionName} parent folder '{parentFolder}'.");
                                }
                                else
                                {
                                    string fullPath = Path.Combine(enlistment.WorkingDirectoryBackingRoot, folder);
                                    if (this.fileSystem.DirectoryExists(fullPath))
                                    {
                                        // Since directories are deleted last and will be empty at that point we can skip errors
                                        // while trying to delete it and leave the empty directory and continue to dehydrate
                                        if (!this.TryIO(tracer, () => this.fileSystem.DeleteDirectory(fullPath, ignoreDirectoryDeleteExceptions: true), $"Deleting '{fullPath}'", out ioError))
                                        {
                                            this.WriteMessage(tracer, $"Cannot {this.ActionName} folder '{folder}': removing '{folder}' failed.");
                                            this.WriteMessage(tracer, "Ensure no applications are accessing the folder and retry.");
                                            this.WriteMessage(tracer, $"More details: {ioError}");
                                            folderErrors.Add($"{folder}\0{ioError}");
                                        }
                                        else
                                        {
                                            foldersToDehydrate.Add(folder);
                                        }
                                    }
                                    else
                                    {
                                        this.WriteMessage(tracer, $"Cannot {this.ActionName} folder '{folder}': '{folder}' does not exist.");

                                        // Still add to foldersToDehydrate so that any placeholders or modified paths get cleaned up
                                        foldersToDehydrate.Add(folder);
                                    }
                                }
                            }
                        }
                    }

                    return true;
                },
                "Cleaning up folders"))
            {
                this.ReportErrorAndExit(tracer, $"{this.ActionName} for folders failed.");
            }

            // We can skip the version check because dehydrating folders requires that a git status
            // be run first, and running git status requires that the repo already be mounted (meaning
            // we don't need to perform another version check again)
            this.Mount(
                tracer,
                skipVersionCheck: true);

            if (foldersToDehydrate.Count > 0)
            {
                this.SendDehydrateMessage(tracer, enlistment, folderErrors, foldersToDehydrate);
            }

            if (folderErrors.Count > 0)
            {
                foreach (string folderError in folderErrors)
                {
                    this.ErrorOutput.WriteLine(folderError);
                }

                this.ReportErrorAndExit(tracer, ReturnCode.DehydrateFolderFailures, $"Failed to dehydrate {folderErrors.Count} folder(s).");
            }
        }
    

开发者ID:microsoft,项目名称:VFSForGit,代码行数:99,代码来源:DehydrateVerb.cs

在DehydrateFolders()方法中,Path的代码示例类中的Combine的代码示例方法一共出现了2次, 见黄色背景高亮显示的地方,欢迎大家点赞

Path.Combine的代码示例8 - CopyFile()

    using System.IO;

        private void CopyFile(
            string sourceRoot,
            string targetRoot,
            string fileName)
        {
            string sourceFile = Path.Combine(sourceRoot, fileName);
            string targetFile = Path.Combine(targetRoot, fileName);

            try
            {
                if (!File.Exists(sourceFile))
                {
                    return;
                }

                File.Copy(sourceFile, targetFile);
            }
            catch (Exception e)
            {
                this.WriteMessage(
                    string.Format(
                        "Failed to copy file {0} in {1} with exception {2}",
                        fileName,
                        sourceRoot,
                        e));
            }
        }
    

开发者ID:microsoft,项目名称:VFSForGit,代码行数:29,代码来源:DiagnoseVerb.cs

在CopyFile()方法中,Path的代码示例类中的Combine的代码示例方法一共出现了2次, 见黄色背景高亮显示的地方,欢迎大家点赞

本文中的Path.Combine方法示例由csref.cn整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。