TorrentHardLinkHelper.Locate.TorrentFileLocater.FindTorrentFileLinks C# (CSharp) Method

FindTorrentFileLinks() private method

private FindTorrentFileLinks ( ) : void
return void
        private void FindTorrentFileLinks()
        {
            foreach (TorrentFile torrentFile in this._torrent.Files)
            {
                var fileLink = new TorrentFileLink(torrentFile);
                foreach (FileSystemFileInfo fsFileInfo in this._fsfiFileInfos)
                {
                    if (fsFileInfo.Length == torrentFile.Length)
                    {
                        fileLink.FsFileInfos.Add(fsFileInfo);
                    }
                }
                if (fileLink.FsFileInfos.Count > 1)
                {
                    var torrentFilePathParts = torrentFile.Path.Split('\\').ToList();
                    torrentFilePathParts.Insert(0, this._torrent.Name);
                    for (int i = 0; i < torrentFilePathParts.Count; i++)
                    {
                        var links = new List<FileSystemFileInfo>();
                        foreach (var fileInfo in fileLink.FsFileInfos)
                        {
                            var filePathPaths = fileInfo.FilePath.Split('\\');
                            if (filePathPaths.Length > i + 1 &&
                                filePathPaths[filePathPaths.Length - i - 1].ToUpperInvariant() ==
                                torrentFilePathParts[torrentFilePathParts.Count - i - 1].ToUpperInvariant())
                            {
                                links.Add(fileInfo);
                            }
                        }
                        if (links.Count == 0)
                        {
                            break;
                        }
                        if (links.Count >= 1)
                        {
                            fileLink.FsFileInfos = links;
                            if (links.Count == 1)
                            {
                                break;
                            }
                        }
                    }
                }
                if (fileLink.FsFileInfos.Count == 1)
                {
                    fileLink.State = LinkState.Located;
                    fileLink.LinkedFsFileIndex = 0;
                }
                else if (fileLink.FsFileInfos.Count > 1)
                {
                    fileLink.State = LinkState.NeedConfirm;
                }
                else
                {
                    fileLink.State = LinkState.Fail;
                }

                this._torrentFileLinks.Add(fileLink);
            }
        }