chovy-sign/PsvImage/Utils.cs

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;
}
}
}