76 lines
1.9 KiB
C#
76 lines
1.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace LibW4M.PS2
|
|
{
|
|
public class PsuFileEntry
|
|
{
|
|
|
|
internal int directoryEntries;
|
|
|
|
public Stream FileData;
|
|
public PsuEntryType EntryType;
|
|
public DateTime CreationDate;
|
|
public ushort Sector;
|
|
public DateTime ModifiedDate;
|
|
public string Filename;
|
|
public bool IsFile
|
|
{
|
|
get
|
|
{
|
|
return (EntryType == PsuEntryType.FILE_ENTRY || EntryType == PsuEntryType.SYSTEM_ENTRY);
|
|
}
|
|
}
|
|
public int Filesize
|
|
{
|
|
get
|
|
{
|
|
if (IsFile)
|
|
{
|
|
return Convert.ToInt32(FileData.Length);
|
|
}
|
|
else
|
|
{
|
|
return directoryEntries;
|
|
}
|
|
}
|
|
set
|
|
{
|
|
if (IsFile)
|
|
{
|
|
FileData.SetLength(value);
|
|
}
|
|
else
|
|
{
|
|
directoryEntries = value;
|
|
}
|
|
}
|
|
}
|
|
|
|
public PsuFileEntry(PsuEntryType entryType, int fileSize, DateTime creationDate, ushort sector, DateTime modifiedDate, string fileName, byte[]? fileData)
|
|
{
|
|
this.EntryType = entryType;
|
|
this.directoryEntries = fileSize;
|
|
this.CreationDate = creationDate;
|
|
this.Sector = sector;
|
|
this.ModifiedDate = modifiedDate;
|
|
this.Filename = fileName;
|
|
|
|
if(fileData is null)
|
|
{
|
|
this.FileData = Stream.Null;
|
|
}
|
|
else
|
|
{
|
|
this.FileData = new MemoryStream();
|
|
this.FileData.Write(fileData, 0, fileSize);
|
|
this.FileData.Seek(0, SeekOrigin.Begin);
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|