Aside from the use of the String class, what is wrong with that method?
You know how big the file is (bckFile.available() tells you that). You could use malloc() to allocate that much space (assuming that the file is small enough), and then use the read() method that takes an array and a size.
Paul's suggestion is about as simple as it gets.
This is a similar thing to his suggestion, and works fine, (without using that horrible "String" class):-
char* pBuffer; // Declare a pointer to your buffer.
myFile = SD.open(F("fileName.txt")); // Open file for reading.
if (myFile)
{
unsigned int fileSize = myFile.size(); // Get the file size.
pBuffer = (char*)malloc(fileSize + 1); // Allocate memory for the file and a terminating null char.
myFile.read(pBuffer, fileSize); // Read the file into the buffer.
pBuffer[fileSize] = '\0'; // Add the terminating null char.
Serial.println(pBuffer); // Print the file to the serial monitor.
myFile.close(); // Close the file.
}
// *** Use the buffer as needed here. ***
free(pBuffer); // Free the memory that was used by the buffer.
You probably don't actually need an 'unsigned int' for the file size, but I was just making sure. If it's even bigger than that, use a larger variable, but it allows files up to 65535 bytes in length, (counting the terminating null character)..