Directory Locations

Referenced from root

Use “/”, e.g. “/home/pi/my_directory_name”

Create Directory If It Doesn’t Exist

#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <stdio.h>
	
	//----- CREATE DIRECTORY IF IT DOESN'T EXIST -----
	int result;
	extern int errno;
	struct stat sb;
	const char *directory_name = "/home/pi/my_directory_name";

	result = stat(directory_name, &sb);
	if ((result != 0) || !(sb.st_mode & S_IFDIR))
	{
		if (errno == ENOENT)		//ENOENT=No such directory entry
		{
			printf("The directory does not exist. Creating new directory: %s\n", directory_name);
			// Add more flags to the mode if necessary.
			result = mkdir(directory_name, S_IRWXU);
			if (result != 0)
			{
				printf("mkdir failed; errno=%d\n",errno);
			}
		}
	}

List contents of a directory

#include <dirent.h>

	DIR *directory1;
	struct dirent *entry1;

	directory1 = opendir(DB_FILEIO_DIRECTORY_LIVE_UPDATES_NOT_ACKNOWLEDGED);			//Open a directory stream
	if (directory1 != NULL)
	{
		while (entry1 = readdir(directory1))
		{
			if (entry1->d_type == DT_REG)			//DT_REG=regular file, DT_DIR=directory
			{
				printf("File: %s\n", entry1->d_name);
			
				//Getting separate filename and extension:
				/*
				string filename;
				string filename_name;
				string filename_extension;
				filename = entry1->d_name;
				size_t dot = filename.find_last_of(".");
				if (dot != std::string::npos)
				{
					filename_name = filename.substr(0, dot);
					filename_extension  = filename.substr(dot, filename.size() - dot);
				}
				else
				{
					filename_name = filename;
					filename_extension  = "";
				}
				printf("  Filename: %s\n", filename_name.c_str());
				printf("  Extension: %s\n", filename_extension.c_str());
				*/
			}
			
		}
	}
	closedir(directory1);