| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | /* * This sketch will remove the files and directories * created by the SdFatMakeDir.pde sketch. * * Performance is erratic due to the large number * of flash erase operations caused by many random * writes to file structures. */#include <SPI.h> #include <SdFat.h>#include <SdFatUtil.h>const uint8_t SD_CHIP_SELECT = SS;SdFat sd;// store error strings in flash to save RAM#define error(s) sd.errorHalt(F(s))/* * remove all files in dir. */void deleteFiles(FatFile* dir) {  char name[32];  SdFile file;   // open and delete files  for (uint16_t n = 0; ; n++){     sprintf(name, "%u.TXT", n);          // open start time     uint32_t t0 = millis();          // assume done if open fails     if (!file.open(dir, name, O_WRITE)) return;          // open end time and remove start time     uint32_t t1 = millis();     if (!file.remove()) error("file.remove failed");          // remove end time     uint32_t t2 = millis();          Serial.print(F("RM "));     Serial.print(n);     Serial.write(' ');          // open time     Serial.print(t1 - t0);     Serial.write(' ');          // remove time     Serial.println(t2 - t1);  }}void setup() {  Serial.begin(9600);  while (!Serial) {}  // wait for Leonardo  Serial.println(F("Type any character to start"));  while (Serial.read() <= 0) {}  delay(200);  // Catch Due reset problem    // initialize the SD card at SPI_FULL_SPEED for best performance.  // try SPI_HALF_SPEED if bus errors occur.  if (!sd.begin(SD_CHIP_SELECT, SPI_FULL_SPEED)) sd.initErrorHalt();    // delete files in root if FAT32  if (sd.vol()->fatType() == 32) {    Serial.println(F("Remove files in root"));    deleteFiles(sd.vwd());  }    // open SUB1 and delete files  SdFile sub1;  if (!sub1.open("SUB1", O_READ)) error("open SUB1 failed");  Serial.println(F("Remove files in SUB1"));  deleteFiles(&sub1);  // open SUB2 and delete files  SdFile sub2;  if (!sub2.open(&sub1, "SUB2", O_READ)) error("open SUB2 failed");  Serial.println(F("Remove files in SUB2"));  deleteFiles(&sub2);  // remove SUB2  if (!sub2.rmdir()) error("sub2.rmdir failed");  Serial.println(F("SUB2 removed"));    // remove SUB1  if (!sub1.rmdir()) error("sub1.rmdir failed");  Serial.println(F("SUB1 removed"));  Serial.println(F("Done"));}void loop() { }
 |