public static LipsyncSequenceDatabase BuildDatabase(DirectoryInfo directory) { LipsyncSequenceDatabase database = ScriptableObject.CreateInstance <LipsyncSequenceDatabase>(); DirectoryWalkCallback callback = filePath => { string[] lines = File.ReadAllLines(filePath.FullName); string name = filePath.Name.Replace(LipsyncAutomation.fileEnding, ""); LipsyncSequence sequence = LipsyncSequenceFactory.BuildSequence(lines, name); database.sequences.Add(sequence); }; LipsyncFileUtility.WalkDirectoryRecursively(directory, ".dat", callback); return(database); }
public static void WalkDirectoryRecursively(DirectoryInfo root, string filetype, DirectoryWalkCallback callback ) { System.IO.FileInfo[] files = null; System.IO.DirectoryInfo[] subDirs = null; // First, process all the files directly under this folder try { files = root.GetFiles("*" + filetype); } // This is thrown if even one of the files requires permissions greater // than the application provides. catch (IOException e) { // This code just writes out the message and continues to recurse. // You may decide to do something different here. For example, you // can try to elevate your privileges and access the file again. Debug.LogError(e.Message); } if (files != null) { for(int i = 0 ; i < files.Length ; i++) { System.IO.FileInfo file = files[i]; if(EditorUtility.DisplayCancelableProgressBar("walk directory", file.Name, i / (float)files.Length)) return; callback( file ); } EditorUtility.ClearProgressBar(); // Now find all the subdirectories under this directory. subDirs = root.GetDirectories(); foreach (System.IO.DirectoryInfo dirInfo in subDirs) { // Recursive call for each subdirectory. WalkDirectoryRecursively(dirInfo, filetype, callback); } } }
public static void WalkDirectoryRecursively(DirectoryInfo root, string filetype, DirectoryWalkCallback callback) { System.IO.FileInfo[] files = null; System.IO.DirectoryInfo[] subDirs = null; // First, process all the files directly under this folder try { files = root.GetFiles("*" + filetype); } // This is thrown if even one of the files requires permissions greater // than the application provides. catch (IOException e) { // This code just writes out the message and continues to recurse. // You may decide to do something different here. For example, you // can try to elevate your privileges and access the file again. Debug.LogError(e.Message); } if (files != null) { for (int i = 0; i < files.Length; i++) { System.IO.FileInfo file = files[i]; if (EditorUtility.DisplayCancelableProgressBar("walk directory", file.Name, i / (float)files.Length)) { return; } callback(file); } EditorUtility.ClearProgressBar(); // Now find all the subdirectories under this directory. subDirs = root.GetDirectories(); foreach (System.IO.DirectoryInfo dirInfo in subDirs) { // Recursive call for each subdirectory. WalkDirectoryRecursively(dirInfo, filetype, callback); } } }