//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;
}