public static void Load() { var time = FileManager.GetTime(); if (FileManager.Exists("Temp/FileManager.data")) { int mode = 0; string extension = ""; string lastPath = ""; var lines = File.ReadAllLines("Temp/FileManager.data"); for (int index = 0; index < lines.Length; ++index) { var line = lines[index]; if (line.Contains("[Files]")) { mode = 1; } else if (line.Contains("[Folders]")) { mode = 2; } else if (line.StartsWith("(")) { extension = line.Parse("(", ")"); } else if (line.StartsWith("=")) { lastPath = line.Remove("=").Replace("$", FileManager.path); } else if (line.StartsWith("+")) { lastPath += line.Remove("+"); } else { var fileData = new FileData(); fileData.directory = lastPath; fileData.name = line; if (mode == 1) { fileData.fullName = fileData.name + "." + extension; fileData.path = fileData.directory + "/" + fileData.fullName; fileData.extension = extension; } else if (mode == 2) { fileData.path = fileData.directory + "/" + fileData.name; fileData.isFolder = true; } FileManager.BuildCache(fileData); } } } if (FileManager.clock) { Debug.Log("[FileManager] : Load cache complete -- " + (FileManager.GetTime() - time) + " seconds."); } }
public static FileData Create(string path) { path = Path.GetFullPath(path).Replace("\\", "/"); var data = new FileData(path); if (!data.name.IsEmpty()) { File.Create(path).Dispose(); } else { data.isFolder = true; Directory.CreateDirectory(path); } FileManager.BuildCache(data); return(data); }
public static void Load() { var time = FileManager.GetTime(); var cachePath = Application.isEditor ? "Temp/FileManager.data" : FileManager.root + "/FileManager.data"; if (FileManager.Exists(cachePath)) { string extension = ""; string lastPath = ""; var lines = File.ReadAllLines(cachePath); for (int index = 0; index < lines.Length; ++index) { var line = lines[index]; if (line.StartsWith("(")) { extension = line.Parse("(", ")"); } else if (line.StartsWith("=") || line.StartsWith("+")) { lastPath = line.StartsWith("=") ? line.TrimLeft("=").Replace("$", FileManager.root) : lastPath + line.TrimLeft("+"); var folderData = new FileData(); folderData.name = lastPath.GetPathTerm(); folderData.directory = lastPath.GetDirectory(); folderData.path = lastPath; folderData.isFolder = true; FileManager.BuildCache(folderData); } else { var fileData = new FileData(); fileData.directory = lastPath; fileData.name = line; fileData.fullName = fileData.name + "." + extension; fileData.path = fileData.directory + "/" + fileData.fullName; fileData.extension = extension; FileManager.BuildCache(fileData); } } } if (FileManager.clock) { Debug.Log("[FileManager] : Load cache complete -- " + (FileManager.GetTime() - time) + " seconds."); } }
public static void Scan(string directory, bool deep = false) { if (!Directory.Exists(directory)) { return; } string[] fileEntries = Directory.GetFiles(directory); string[] folderEntries = Directory.GetDirectories(directory); if (!FileManager.monitors.ContainsKey(directory)) { FileManager.monitors[directory] = new FileMonitor(directory); } FileManager.filesByPath.AddNew(directory); foreach (string filePath in fileEntries) { if (filePath.ContainsAny(".meta", "unitytemp", "unitylock")) { continue; } var path = filePath.Replace("\\", "/"); FileManager.BuildCache(new FileData(path)); } foreach (string folderPath in folderEntries) { if (folderPath.ContainsAny(".svn", "~")) { continue; } var path = folderPath.Replace("\\", "/"); FileManager.BuildCache(new FileData(path, true)); if (deep) { FileManager.Scan(path, true); } } }