63 lines
2.1 KiB
C#
63 lines
2.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Text;
|
|
|
|
namespace PsvImage
|
|
{
|
|
static class Utils
|
|
{
|
|
public static SceDateTime ToSceDateTime(this DateTime dateTime)
|
|
{
|
|
var sceDateTime = new SceDateTime();
|
|
sceDateTime.Year = (ushort)dateTime.Year;
|
|
sceDateTime.Month = (ushort)dateTime.Month;
|
|
sceDateTime.Day = (ushort)dateTime.Day;
|
|
sceDateTime.Hour = (ushort)dateTime.Hour;
|
|
sceDateTime.Minute = (ushort)dateTime.Minute;
|
|
sceDateTime.Second = (ushort)dateTime.Second;
|
|
sceDateTime.Microsecond = (uint)dateTime.Millisecond * 1000;
|
|
return sceDateTime;
|
|
}
|
|
|
|
public static SceIoStat ToSceIoStat(string path)
|
|
{
|
|
var stats = new SceIoStat();
|
|
var attributes = File.GetAttributes(path);
|
|
|
|
if (attributes.HasFlag(FileAttributes.Directory))
|
|
{
|
|
stats.Mode |= SceIoStat.Modes.Directory;
|
|
stats.Size = 0;
|
|
}
|
|
else
|
|
{
|
|
stats.Mode |= SceIoStat.Modes.File;
|
|
stats.Size = (ulong)(new FileInfo(path).Length);
|
|
}
|
|
|
|
if (attributes.HasFlag(FileAttributes.ReadOnly))
|
|
{
|
|
stats.Mode |= SceIoStat.Modes.GroupRead;
|
|
stats.Mode |= SceIoStat.Modes.OthersRead;
|
|
stats.Mode |= SceIoStat.Modes.UserRead;
|
|
}
|
|
else
|
|
{
|
|
stats.Mode |= SceIoStat.Modes.GroupRead;
|
|
stats.Mode |= SceIoStat.Modes.GroupWrite;
|
|
stats.Mode |= SceIoStat.Modes.OthersRead;
|
|
stats.Mode |= SceIoStat.Modes.OthersWrite;
|
|
stats.Mode |= SceIoStat.Modes.UserRead;
|
|
stats.Mode |= SceIoStat.Modes.UserWrite;
|
|
}
|
|
|
|
stats.CreationTime = File.GetCreationTimeUtc(path).ToSceDateTime();
|
|
stats.AccessTime = File.GetLastAccessTimeUtc(path).ToSceDateTime();
|
|
stats.ModificaionTime = File.GetLastWriteTimeUtc(path).ToSceDateTime();
|
|
|
|
return stats;
|
|
}
|
|
}
|
|
}
|