Skip to main content

File System

Meadow.OS has full support for file and directory manipulation via System.IO API calls. In addition, the Meadow F7 board has onboard non-volatile flash storage that, while primarily used for app deployment and storage, can also be used as for persistent storage like a traditional hard drive.

Named Directories​

There are a number of named directories available via the MeadowOS.FileSystem class that provide known, convenient locations to store files and data, each with a set of rules around the persistance of their contents during reboot, OS upgrade, etc. These named directories are:

  • UserFileSystemRoot - This returns /meadow0, which is the root directory of the flash storage on the Meadow device. This directory shouldn't be used directly, but is the root for other, more useful directories.
  • DataDirectory - Gets the Data directory. Use this directory to store files that require permanent persistence, such as SQL data files, even through OS deployments and Over-the-Air (OtA) updates.
  • DocumentsDirectory - Gets the Documents directory. Use this directory to store files that require permanent persistence, such as application document files, even through OS deployments and Over-the-Air (OtA) updates.
  • CacheDirectory - Gets the Cache directory. Use this directory to store semi-transient files. The contents of this folder will be erased during application updates.
  • TempDirectory - Gets the Temp directory. Use this directory to store transient files. This contents of this folder will be erased on device restart.

Named Directory Example​

The named directories can be used with normal System.IO calls. For instance the following example code creates a "hello.txt" file in the TempDirectory:

// create a `hello.txt` file in the `/Temp` directory
CreateFile(MeadowOS.FileSystem.TempDirectory, "hello.txt");

private void CreateFile(string path, string filename)
{
if (!Directory.Exists(path)) {
Directory.CreateDirectory(path);
}

try {
using (var fs = File.CreateText(Path.Combine(path,filename))) {
fs.WriteLine("Hello Meadow File!");
}
} catch (Exception ex) {
Console.WriteLine(ex.Message);
}
}

Known Issues​

NOTE: Non-persistent during deployment - Currently, during IDE deployment, all non app-related files are purged from flash. In a near future release, all files within a special app folder will be excluded from file purging. In the meantime, if you need to persist files between app deployment, you can use Meadow.CLI to manually deploy a new app.