/// <summary> /// 현재 폴더에서 상위/하위 폴더가 존재하는지 찾아냅니다. 만약 접근 가능하지 않을 경우에도 실패로 처리됩니다. /// </summary> /// <param name="currentFolder">대상 폴더입니다.</param> /// <param name="folderName">찾고자 하는 폴더의 이름입니다.</param> /// <param name="isFindingUpper">상위 폴더를 찾아낼 것인지 결정합니다.</param> /// <returns>찾아낸 결과입니다. 실패할 경우 null을 return합니다.</returns> public FolderShortcut CheckFolderFound(Folder currentFolder, string folderName, bool isFindingUpper = false) { try { FolderShortcut foundFolderShortcut = Array.Find<FolderShortcut>(currentFolder.LowerFolderInfo, folderInfo => folderInfo.FolderName == folderName); if (isFindingUpper) { return currentFolder.UpperFolderInfo; } else { if (!foundFolderShortcut.Equals(null)) { return foundFolderShortcut; } return null; } } catch (NullReferenceException) { return null; } }
/// <summary> /// 현재 폴더에서 찾고자 하는 파일이 있는지 찾아냅니다. 아이템이 얻어지지 않았을 경우에도 탐색 실패로 처리됩니다. /// </summary> /// <param name="currentFolder">대상 폴더입니다.</param> /// <param name="fileName">찾고자 하는 아이템의 이름을 가리킵니다.</param> /// <returns>찾아낸 결과입니다. 실패할 경우 null을 return합니다.</returns> public Item CheckFileFound(Folder currentFolder, string fileName) { try { Item foundItem = Item.FindItem(currentFolder.Items, fileName); if (foundItem != null && foundItem.IsGet) { return foundItem; } else { return null; } } catch (NullReferenceException) { return null; } }
/// <summary> /// 폴더 배열에서 찾고자 하는 아이템을 찾아줍니다. 찾지 못하면 null을 반환합니다. /// </summary> /// <param name="folders">여러 폴더가 들어있는 배열입니다.</param> /// <param name="nameToFind">찾고자 하는 폴더의 이름입니다.</param> /// <returns>찾은 폴더입니다.</returns> public static Folder FindFolder(Folder[] folders, string nameToFind) { return Array.Find<Folder>(folders, (folder => folder.Name == nameToFind)); }
/// <summary> /// 가장 최근에 참조하고 있는 폴더의 경로를 반영시킵니다. /// </summary> /// <param name="folderToChange">경로를 참조시킬 폴더를 가리킵니다.</param> /// <param name="isShrink">참조 폴더 경로를 줄이는 것인지, 늘리는 것인지에 대한 여부입니다.</param> public static void ChangeRecentFolderPath(Folder folderToChange, bool isShrink) { if (isShrink) { realizedData.recentConsoleFolderPath = realizedData.recentConsoleFolderPath.Replace("/" + folderToChange.Name, string.Empty); } else { realizedData.recentConsoleFolderPath = realizedData.recentConsoleFolderPath.Replace(folderToChange.UpperFolderInfo.FolderName, folderToChange.UpperFolderInfo.FolderName + "/" + folderToChange.Name); } }