Aptivi - Manual
ProjectsWebsiteBlog
Nitrocid KS v0.1.0 - Rolling Manual
Nitrocid KS v0.1.0 - Rolling Manual
  • Welcome!
  • Version Release Notes
  • Installation and Maintenance
    • Installing the Kernel
      • Windows
      • macOS
      • Linux
      • Android
    • Upgrading the Kernel
      • Windows
      • macOS
      • Linux
      • Android
    • Dependency Information
  • Fundamentals
    • What is the Kernel?
    • What is Nitrocid KS?
    • Simulated Kernel Features
      • Extra Features
        • More Networking
          • FTP Client
          • SFTP Client
          • RSS Client
          • HTTP Client
          • Mail Client
        • Games and Amusements
          • Hangman
          • BackRace
          • Meteor
          • Russian Roulette
          • ShipDuet
          • Snaker
          • Solver
          • SpeedPress
          • Wordle
        • More Editors
          • JSON Editor
          • SQL Editor
        • Common Programs
          • Archive
          • Caffeine
          • Calendar
          • Calculator
          • Contacts
          • Dictionary
          • Git Shell
          • Music Player
          • Notes
          • SSH Connection
          • Timers
          • To-do List
          • Unit Converter
          • Weather
        • Docking
        • Language Studio
        • Theme Studio
      • Accounts
        • Groups
        • Permissions
      • Editors
        • Text Editor
        • Hex Editor
      • Shells
        • Commands List
        • Addon Commands List
      • Files and Folders
        • Hashing and Encryption
      • Networking
      • Languages
      • Screensavers
  • Advanced and Power Users
    • Building the Kernel
      • Building on Windows
      • Building on macOS
      • Building on Linux
      • Building on Android
    • Kernel Modifications
      • Building your Mod
      • Analyzing your Mod
        • Text - NKS0001
        • ConsoleBase - NKS0002
        • ConsoleBase - NKS0003
        • ConsoleBase - NKS0004
        • ConsoleBase - NKS0005
        • ConsoleBase - NKS0006
        • ConsoleBase - NKS0007
        • ConsoleBase - NKS0008
        • ConsoleBase - NKS0009
        • Files - NKS0010
        • Files - NKS0011
        • Files - NKS0012
        • Files - NKS0013
        • Files - NKS0014
        • Files - NKS0015
        • Files - NKS0016
        • Files - NKS0017
        • Files - NKS0018
        • Files - NKS0019
        • Files - NKS0020
        • Files - NKS0021
        • Files - NKS0022
        • Files - NKS0023
        • Kernel - NKS0024
        • Kernel - NKS0025
        • Kernel - NKS0026
        • Kernel - NKS0027
        • Kernel - NKS0031
        • Kernel - NKS0032
        • Kernel - NKS0033
        • Kernel - NKS0037
        • Kernel - NKS0038
        • Kernel - NKS0039
        • Kernel - NKS0040
        • Kernel - NKS0041
        • Kernel - NKS0042
        • Kernel - NKS0043
        • Kernel - NKS0052
        • Kernel - NKS0053
        • Languages - NKS0044
        • Languages - NKS0045
        • Languages - NKS0046
        • Network - NKS0051
        • Text - NKS0047
        • Text - NKS0048
        • Text - NKS0049
        • Text - NKS0050
        • Text - NKS0054
        • Text - NKS0055
      • Managing your Mod
        • Inter-Mod Communication
        • Inter-Addon Communication
    • Diagnostics
      • Debugging
        • Local Debugging
        • Remote Debugging
      • Testing
      • Other Diagnostics
    • Inner Workings
      • Kernel Settings
        • Mechanics of Settings App
        • Settings Format
        • Custom Settings
      • Shell Structure
        • Help System
        • Command Parsing
        • Command Information
        • Command Switch Management
        • Command Switch Information
        • Shell History
        • Shell Scripting
        • Shell Presets
        • Extra Shell Features
      • Multilingual Kernel
        • Custom Languages
      • Inner Essentials
        • Kernel Drivers
          • Console Drivers
          • Debug Logger Drivers
          • Encoding Drivers
          • Encryption Drivers
          • Filesystem Drivers
          • Hardware Prober Drivers
          • Input Drivers
          • Network Drivers
          • RNG Drivers
          • Regular Expression Drivers
          • Sorting Drivers
        • Kernel Placeholders
        • The Permissions
        • The Users
        • Kernel Threads
        • Kernel Arguments
        • Kernel Journaling
        • Remote Procedure
        • Nitrocid Filesystem
        • Screensaver Internals
        • Splash Internals
        • Kernel Platform
        • Theme Internals
        • Color Internals
        • Privacy Consents
        • System Notifications
        • MAL and MOTD
        • Progress Handlers
        • Assembly Signing
        • Assembly Reflection
        • Random Number Generation
        • Network Tools
        • Date and Time
        • Mod Manual Pages
      • Miscellaneous APIs
  • Project Dependencies
  • Report an issue
  • Source code
  • API Reference
Powered by GitBook
On this page
Edit on GitHub
  1. Advanced and Power Users
  2. Inner Workings
  3. Inner Essentials
  4. Kernel Drivers

Filesystem Drivers

Changing how the filesystem works

Last updated 1 year ago

The filesystem driver is one of the supported driver types on Nitrocid KS. These drivers allow you to change how the filesystem works, thus earning dynamic filesystem improvements, such as providing better workarounds to perform certain console functions, providing code to speed up the console, and much more.

The console drivers have the following characteristics:

  • Interface: IFilesystemDriver

  • Base class: BaseFilesystemDriver

The filesystem drivers have the following functions that you can optionally override below:

IFilesystemDriver.cs
void AddAttributeToFile(string FilePath, FileAttributes Attributes);
void RemoveAttributeFromFile(string FilePath, FileAttributes Attributes);
List<FileSystemEntry> CreateList(string folder, bool Sorted = false, bool Recursive = false);
string SortSelector(FileSystemEntry FileSystemEntry, int MaxLength);
string[] GetFilesystemEntries(string Path, bool IsFile = false, bool Recursive = false);
string[] GetFilesystemEntries(string Parent, string Pattern, bool Recursive = false);
string[] GetFilesystemEntriesRegex(string Parent, string Pattern, bool Recursive = false);
void ConvertLineEndings(string TextFile);
void ConvertLineEndings(string TextFile, FilesystemNewlineStyle LineEndingStyle);
FilesystemNewlineStyle GetLineEndingFromFile(string TextFile);
string[] CombineTextFiles(string Input, string[] TargetInputs);
byte[] CombineBinaryFiles(string Input, string[] TargetInputs);
void CopyFileOrDir(string Source, string Destination);
void CopyDirectory(string Source, string Destination);
void CopyDirectory(string Source, string Destination, bool ShowProgress);
void CopyFile(string Source, string Destination);
void MakeDirectory(string NewDirectory, bool ThrowIfDirectoryExists = true);
void MakeFile(string NewFile, bool ThrowIfFileExists = true);
void MakeJsonFile(string NewFile, bool ThrowIfFileExists = true, bool useArray = false);
void MakeSymlink(string linkName, string target);
void MoveFileOrDir(string Source, string Destination);
void MoveDirectory(string Source, string Destination);
void MoveDirectory(string Source, string Destination, bool ShowProgress);
void MoveFile(string Source, string Destination);
void RemoveDirectory(string Target);
void RemoveDirectory(string Target, bool ShowProgress, bool secureRemove = false);
void RemoveFile(string Target, bool secureRemove = false);
void RemoveFileOrDir(string Target, bool secureRemove = false);
List<string> GetPathList();
string GetRandomFileName();
string GetRandomFolderName();
void AddToPathLookup(string Path);
void AddToPathLookup(string Path, string RootPath);
void RemoveFromPathLookup(string Path);
void RemoveFromPathLookup(string Path, string RootPath);
bool FileExistsInPath(string FilePath, ref string Result);
void PrintDirectoryInfo(FileSystemEntry DirectoryInfo);
void PrintDirectoryInfo(FileSystemEntry DirectoryInfo, bool ShowDirectoryDetails);
void PrintFileInfo(FileSystemEntry FileInfo);
void PrintFileInfo(FileSystemEntry FileInfo, bool ShowFileDetails);
void PrintContents(string filename);
void PrintContents(string filename, bool PrintLineNumbers, bool ForcePlain = false);
string RenderContents(string filename);
string RenderContents(string filename, bool PrintLineNumbers, bool ForcePlain = false);
void DisplayInHex(long StartByte, long EndByte, byte[] FileByte);
void DisplayInHex(byte ByteContent, bool HighlightResults, long StartByte, long EndByte, byte[] FileByte);
void DisplayInHexDumbMode(long StartByte, long EndByte, byte[] FileByte);
void DisplayInHexDumbMode(byte ByteContent, bool HighlightResults, long StartByte, long EndByte, byte[] FileByte);
string RenderContentsInHex(long StartByte, long EndByte, byte[] FileByte);
string RenderContentsInHex(byte ByteContent, bool HighlightResults, long StartByte, long EndByte, byte[] FileByte);
string RenderContentsInHex(long ByteHighlight, long StartByte, long EndByte, byte[] FileByte);
bool FileExists(string File, bool Neutralize = false);
bool FolderExists(string Folder, bool Neutralize = false);
bool Exists(string Path, bool Neutralize = false);
bool Rooted(string Path);
string GetNumberedFileName(string path, string fileName);
char[] GetInvalidPathChars();
bool TryParsePath(string Path);
bool TryParseFileName(string Name);
bool IsBinaryFile(string Path);
bool IsJson(string Path);
bool IsSql(string Path);
List<string> SearchFileForString(string FilePath, string StringLookup);
List<string> SearchFileForStringRegexp(string FilePath, Regex StringLookup);
List<(string, MatchCollection)> SearchFileForStringRegexpMatches(string FilePath, Regex StringLookup);
long GetAllSizesInFolder(DirectoryInfo DirectoryInfo);
long GetAllSizesInFolder(DirectoryInfo DirectoryInfo, bool FullParseMode);
string[] ReadContents(string filename);
string[] ReadAllLinesNoBlock(string path);
string ReadContentsText(string filename);
string ReadAllTextNoBlock(string path);
byte[] ReadAllBytes(string path);
byte[] ReadAllBytesNoBlock(string path);
void WriteContents(string filename, string[] contents);
void WriteAllLinesNoBlock(string path, string[] contents);
void WriteContentsText(string filename, string contents);
void WriteAllTextNoBlock(string path, string contents);
void WriteAllBytes(string path, byte[] contents);
void WriteAllBytesNoBlock(string path, byte[] contents);
void ClearFile(string path);
string ReadToEndAndSeek(ref StreamReader stream);
void WrapTextFile(string path);
void WrapTextFile(string path, int columns);
(int line, string one, string two)[] Compare(string pathOne, string pathTwo);

The FilesystemDriverTools class contains tools to get all the filesystem drivers and their names and set a filesystem driver as a default. The driver management tools also allow you to do the same thing, though you'll have to specify the driver type.