//EX.
SD2SPIFFS("/mp3/bgm001.mp3", "/bgm001.mp3");
//========================================================================
//FILE TRANSFER
//========================================================================
const int BUFFER_SIZE = 512;
bool SD2SPIFFS(const char *filename_S, const char *filename_D) {
bool rs = true;
//SD_FILE_OPEN_CHECK
File SD_FILE = SD.open(filename_S, FILE_READ );
if (!SD_FILE || SD_FILE.isDirectory()) {
return false;
}
//SPIFFS_FILE_Find_out_what_already_exists
if (SPIFFS.exists(filename_D)) {
SD_FILE.close();
return false;
}
//
M5.Lcd.print("SD2SPIFFS FILE:"); M5.Lcd.print(filename_S);
//SIZE READ
size_t F_SIZE_S = SD_FILE.size();
//SPIFFS SPACE CHECK 2019/3/31 Add
if (SPIFFS.totalBytes() - SPIFFS.usedBytes() < F_SIZE_S) {
M5.Lcd.print("\nNO SPACE for SPIFFS!\n");
SD_FILE.close();
delay(200);
return false;
}
//SPIFFS_FILE_OPEN
File SPI_FILE = SPIFFS.open(filename_D, FILE_WRITE );
if (!SPI_FILE) {
SD_FILE.close();
SPI_FILE.close();
return false;
}
//
M5.Lcd.print("\nPLEASE WAIT...");
//FILE DATA COPY SD To SPIFFS
uint8_t buf[BUFFER_SIZE];
size_t CT = 0, NCT = 0;
while (1) {
if (CT + BUFFER_SIZE >= F_SIZE_S) {
if (SD_FILE.read(buf, F_SIZE_S - CT) == -1) {
rs = false;
break;
}
if (SPI_FILE.write(buf, F_SIZE_S - CT) == -1) {
rs = false;
break;
}
break;
}
CT += BUFFER_SIZE;
if (SD_FILE.read(buf, BUFFER_SIZE) == -1) {
rs = false;
break;
}
if (SPI_FILE.write(buf, BUFFER_SIZE) == -1) {
rs = false;
break;
}
if (NCT % 50 == 0)M5.Lcd.print("@");
NCT++;
delay(1);
}
M5.Lcd.print("\n");
//CLOSE
SD_FILE.close();
SPI_FILE.close();
return rs;
}