Readwrite example in the SDFat library produces duplicate output?

I’m just starting to learn how to code with arduino and was playing around with the SdFat Library’s examples.

The example shown below was supposed to create a file called test.txt on the microsd card, and write “testing 1, 2, 3.” once into the file.

  SD card read/write

 This example shows how to read and write data to and from an SD card file
 The circuit:
 * SD card attached to SPI bus as follows:
 ** MOSI - pin 11
 ** MISO - pin 12
 ** CLK - pin 13

 created   Nov 2010
 by David A. Mellis
 modified 9 Apr 2012
 by Tom Igoe

 This example code is in the public domain.


#include <SPI.h>
//#include <SD.h>
#include "SdFat.h"
SdFat SD;

#define SD_CS_PIN SS
File myFile;

void setup() {
  // Open serial communications and wait for port to open:
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only

  Serial.print("Initializing SD card...");

  if (!SD.begin(SD_CS_PIN)) {
    Serial.println("initialization failed!");
  Serial.println("initialization done.");

  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  myFile ="test.txt", FILE_WRITE);

  // if the file opened okay, write to it:
  if (myFile) {
    Serial.print("Writing to test.txt...");
    myFile.println("testing 1, 2, 3.");
    // close the file:
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");

  // re-open the file for reading:
  myFile ="test.txt");
  if (myFile) {

    // read from the file until there's nothing else in it:
    while (myFile.available()) {
    // close the file:
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");

void loop() {
  // nothing happens after setup

However, the output, curiously enough, shows that two lines of “testing 1, 2, 3.” are written in succession into the file. I looked through the code but cant seem to find where exactly in the code does this duplication happen.

The file looks something like this:

testing 1, 2, 3.
testing 1, 2, 3.

When I thought it should simply show:

testing 1, 2, 3.

The program will append the text line to the file each time it is run then read back each line.

Bear in mind that opening the Serial monitor restarts the Arduino so that the program will have run once at power up and a second time on opening the Serial monitor