You have a few options here. First a clarification of the method you are using. Directory.GetDirectories(string) returns an array of string containing the paths of folders contained within the folder at the path passed to the method. This array does not contain file paths or file names. You can use an instance of DirectoryInfo such as:
DirectoryInfo directory = new DirectoryInfo("my path to directory");
DirectoryInfo[] subDirectories = directory.GetDirectories();
This will return your sub-directories contained within the directory at the path you used in the DirectoryInfo constructor.
As for arrays in general; you cannot add an element to an array as an array has a fixed length, however there is a method within the static Array class Array.Resize(ref yourArray, int newSize) that you may use to re-size then insert the new values at necessary indexes (this does create a new array from the backend and assign it the specified length and values from the previous array but in this case you don't need to keep track of multiple array variables within the user code, helping to keep it slightly easier to remember in my opinion) but if you are going to be doing this regularly you may be better off with using another Type such as List.
If you are wanting the file names such as myTextFile.txt and not the full paths you can use a little bit of Linq such as:
DirectoryInfo directory = new DirectoryInfo("my path to directory");
List<string> myFileNames = directory.GetFiles().Select(c => c.Name).ToList();
This will return a List of string, the names of the files within the directory at the path you used within your DirectoryInfo constructor.
You can do the same thing with getting directory names by swapping out the directory.GetFiles() for directory.GetDirectories() then appending the Select() and ToList().
Listnot an array.GetDirectoriesreturns an array of the subdirectories in the path. GetFiles returns an array of the actual files in the path. Is that what you were looking for? Your question is a little unclear.