user3554: I'm trying to datalog to a EyeFi SD card by writing to a file with a jpg extension. Here's that portion of my code so far:
// see if the directory exists, create it if not.
if( !SD.exists("/DCIM/100NIKON") ) 
{
  if( SD.mkdir("/DCIM/100NIKON") ) 
  {
    Serial.print("File directory created: ");
  } 
  else {
    error("File directory not created");
  }
}
else
{
  Serial.print("File directory exists: ");
}

// Test file
char filename[] = "DSCN0000.JPG";

if (! SD.exists(filename))
{
  logfile = SD.open(filename, FILE_WRITE); // only open a new file if it doesn't exist
}

if (! logfile)
{
  error("Couldnt create file");
}

The Arduino creates the directory, but the file is still saved to the root.  I would love some help or tips on this.

user86: You're creating a directory, and then not writing the file into it.
You need to change the filename to /DCIM/100NIKON/DSCN0000.JPG";
Note that SD.open() takes the full filepath to the file, not just the file*name*.
From the Arduino Docs:

The file names passed to the SD library functions can include paths
  separated by forward-slashes, /, e.g. "directory/filename.txt".
  Because the working directory is always the root of the SD card, a
  name refers to the same file whether or not it includes a leading
  slash (e.g. "/file.txt" is equivalent to "file.txt"). As of version
  1.0, the library supports opening multiple files.

(emphasis mine)

3554: <p>I'm trying to datalog to a EyeFi SD card by writing to a file with a jpg extension. Here's that portion of my code so far:</p>

<pre><code>// see if the directory exists, create it if not.
if( !SD.exists("/DCIM/100NIKON") ) 
{
  if( SD.mkdir("/DCIM/100NIKON") ) 
  {
    Serial.print("File directory created: ");
  } 
  else {
    error("File directory not created");
  }
}
else
{
  Serial.print("File directory exists: ");
}

// Test file
char filename[] = "DSCN0000.JPG";

if (! SD.exists(filename))
{
  logfile = SD.open(filename, FILE_WRITE); // only open a new file if it doesn't exist
}

if (! logfile)
{
  error("Couldnt create file");
}
</code></pre>

<p>The Arduino creates the directory, but the file is still saved to the root.  I would love some help or tips on this.</p>
 86: <p>You're creating a directory, and then <em>not writing the file into it</em>.</p>

<p>You need to change the filename to <code>/DCIM/100NIKON/DSCN0000.JPG";</code></p>

<p>Note that <code>SD.open()</code> takes the <strong>full filepath to the file</strong>, not just the file*name*.</p>

<p>From the <a href="http://arduino.cc/en/Reference/SD" rel="noreferrer">Arduino Docs</a>:</p>

<blockquote>
  <p>The file names passed to the SD library functions can include paths
  separated by forward-slashes, /, e.g. "directory/filename.txt".
  Because the <strong>working directory is always the root of the SD card</strong>, a
  name refers to the same file whether or not it includes a leading
  slash (e.g. "/file.txt" is equivalent to "file.txt"). As of version
  1.0, the library supports opening multiple files.</p>
</blockquote>

<p>(emphasis mine)</p>
