write data to SD CARD

I write “testing 1, 2, 3” to sd card,but I re-open the file and read later.
The serial monitor appear “testing 1, 2, 3” and “testing 1, 2, 3”.
I write “testing 1, 2, 3” once,but it appear “testing 1, 2, 3” twice.
Why?The library problem?

#include <SD.h>

File myFile;

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


  Serial.print("Initializing SD card...");
  // On the Ethernet Shield, CS is pin 4. It's set as an output by default.
  // Note that even if it's not used as the CS pin, the hardware SS pin 
  // (10 on most Arduino boards, 53 on the Mega) must be left as an output 
  // or the SD library functions will not work. 
   pinMode(10, OUTPUT);
   
  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    return;
  }
  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 = SD.open("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:
    myFile.close();
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
  
  // re-open the file for reading:
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");
    
    // read from the file until there's nothing else in it:
    while (myFile.available()) {
    	Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  } else {
  	// if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
}

void loop()
{
	// nothing happens after setup
}

When you open the serial monitor, it resets the program and it writes “testing 1,2,3” a second time.

If you want to eliminate writing in setup before the monitor is opened, you can add these lines after Serial.begin() to wait in the while loop until you enter a character. Then you will read “testing 1,2,3” only once.

Serial.println("Type any character to start");
  while (Serial.read() <= 0) {}

It's the sort of thing that only happens with "testing 123" programmes. In normal practice you only write to SD on receipt of data, and it's a fair bet that anything that turns up twice like this is really redundant, and shouldn't be written at all.