JD2022-TU1/main/tools/apps/AssetBrowser/FileLibrary/FileLibrary.cs

68 lines
1.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PInvoke;
using UAF;
namespace AssetBrowser
{
class FileLibrary
{
public string WorkingFolder { get; set; }
private List<DataFile> m_files;
public List<DataFile> Files
{
get { return m_files; }
}
public FileLibrary()
{
Reset();
}
private void Reset()
{
WorkingFolder = "";
m_files = new List<DataFile>();
}
public void LoadFromWorkingFolder()
{
WorkingFolder = "C:\\P4_Data_UAF\\W1W\\data";
//WorkingFolder = "C:\\GameToolTemp_WiiU\\5 - Cooking";
DateTime startTime = DateTime.Now;
FileEnumerator fileEnumerator;
if (UAF.WindowsUtils.CurrentUserIsAdmin())
{
fileEnumerator = new NtfsMftEnumerator();
}
else
{
System.Windows.MessageBox.Show("You're not running this program as administrator. It will be really slow!", "Warning!");
fileEnumerator = new BasicFileEnumerator();
}
foreach (string filename in fileEnumerator.GetAllFiles(WorkingFolder))
{
DataFile dataFile = new DataFile();
dataFile.FilePath = filename;
m_files.Add(dataFile);
}
Console.Out.WriteLine("Build file list time: " + (DateTime.Now - startTime));
Console.Out.WriteLine("Number of files : " + m_files.Count);
DateTime sortTime = DateTime.Now;
m_files.Sort(
delegate(DataFile file1, DataFile file2)
{
return Comparer<string>.Default.Compare(file1.FilePath, file2.FilePath);
});
Console.Out.WriteLine("Sort list time: " + (DateTime.Now - sortTime));
}
}
}