Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
FileSystemEntry.cs
Go to the documentation of this file.
2
3public ref struct FileSystemEntry
4{
6
7 public ReadOnlySpan<char> Directory { get; private set; }
8
9 public ReadOnlySpan<char> RootDirectory { get; private set; }
10
11 public ReadOnlySpan<char> OriginalRootDirectory { get; private set; }
12
13 public unsafe ReadOnlySpan<char> FileName => _info->FileName;
14
15 public unsafe FileAttributes Attributes => _info->FileAttributes;
16
17 public unsafe long Length => _info->EndOfFile;
18
19 public unsafe DateTimeOffset CreationTimeUtc => _info->CreationTime.ToDateTimeOffset();
20
21 public unsafe DateTimeOffset LastAccessTimeUtc => _info->LastAccessTime.ToDateTimeOffset();
22
23 public unsafe DateTimeOffset LastWriteTimeUtc => _info->LastWriteTime.ToDateTimeOffset();
24
25 public bool IsDirectory => (Attributes & FileAttributes.Directory) != 0;
26
27 public bool IsHidden => (Attributes & FileAttributes.Hidden) != 0;
28
29 public string ToSpecifiedFullPath()
30 {
33 {
34 readOnlySpan = readOnlySpan.Slice(1);
35 }
36 return Path.Join(OriginalRootDirectory, readOnlySpan, FileName);
37 }
38
39 internal unsafe static void Initialize(ref FileSystemEntry entry, Interop.NtDll.FILE_FULL_DIR_INFORMATION* info, ReadOnlySpan<char> directory, ReadOnlySpan<char> rootDirectory, ReadOnlySpan<char> originalRootDirectory)
40 {
41 entry._info = info;
42 entry.Directory = directory;
43 entry.RootDirectory = rootDirectory;
44 entry.OriginalRootDirectory = originalRootDirectory;
45 }
46
48 {
49 return FileSystemInfo.Create(Path.Join(Directory, FileName), ref this);
50 }
51
52 public string ToFullPath()
53 {
54 return Path.Join(Directory, FileName);
55 }
56}
static unsafe FileSystemInfo Create(string fullPath, ref FileSystemEntry findData)
static bool StartsWithDirectorySeparator(ReadOnlySpan< char > path)
static string Join(ReadOnlySpan< char > path1, ReadOnlySpan< char > path2)
Definition Path.cs:387
static bool EndsInDirectorySeparator(ReadOnlySpan< char > path)
Definition Path.cs:848
unsafe Interop.NtDll.FILE_FULL_DIR_INFORMATION * _info
unsafe ReadOnlySpan< char > FileName
static unsafe void Initialize(ref FileSystemEntry entry, Interop.NtDll.FILE_FULL_DIR_INFORMATION *info, ReadOnlySpan< char > directory, ReadOnlySpan< char > rootDirectory, ReadOnlySpan< char > originalRootDirectory)
ReadOnlySpan< T > Slice(int start)