68 lines
1.9 KiB
C#
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));
|
|
}
|
|
}
|
|
}
|