Specified folder/zip file does not contain a valid library

Im currently working with the UTFT SDRaw 320x240 Demo. Im using a Mega2560 and a 3.2 tft lcd with its shield. When I compiled the program it said that "SdFat.h: No such file or directory" So I went on to GitHub and downloaded the SdFat library GitHub - greiman/SdFat: Arduino FAT16/FAT32 exFAT Library
I then tried to install it the library and it gave an error message

"compilation terminated
exit status 1
Error compiling.
Specified folder/zip file does not contain a valid library"

I already attempted manual installation. According to a forum I found it could also be the hyphen on the name of the library but I already extracted the files and removed the hyphen after renaming it and it still gives me the same error.

I then tried to install it the library

Following what steps, exactly?

The zip file that is downloaded from github, for any library, contains -master in the name. The - is not a valid character in a library name. The lame tool that Arduino provides can not deal with something as trivial as github's handling of file names, so is worthy of nothing but scorn, not use.

PaulS:
Following what steps, exactly?

-Downloaded file from GitHub
-Extracted Files
-Removed the - and renamed file SdFat
-Zipped the file
-Moved it to "Downloads"
-Went into Arduino IDE and added .ZIP library

Still got same error mentioned earlier.

Should I leave the "master" and only remove the - ? I attempted manual installation but IDE does not recognize it or display it on libraries

Remove both the "-" and the "master"

PaulS:
The lame tool that Arduino provides can not deal with something as trivial as github's handling of file names, so is worthy of nothing but scorn, not use.

+1. I always just unzip and install libraries manually. It's dead easy, and I keep a backup archive of master libraries.

-Extracted Files
-Removed the - and renamed file SdFat
-Zipped the file

Is it just me, or wouldn't renaming the stupid file have been simpler?

Extracted them to where?

-Moved it to "Downloads"

Why?

-Went into Arduino IDE and added .ZIP library

Again trying to use the lame tool.

Just unzip the file to your libraries folder in your sketch folder.

Sometimes decompressing github libraries result not only in folders with added names like "MASTER" or semicolon, also the libraries get in a folder inside a folder like:

libraries-¬
|
SdFat_MASTER-¬
|
SdFat-¬
keywords.txt
SdFat.cpp
SdFat.h

move SdFat folder to libraries and delete SdFat:MASTER

libraries-¬
|
SdFat-¬
keywords.txt
SdFat.cpp
SdFat.h

I hope it helps.

PaulS:
Just unzip the file to your libraries folder in your sketch folder.

I followed your advice and started from scratch, i simply downloaded the file extracted the files in the library folder and renamed it SdFat, now instead of giving me the error above it says

"error compiling."
Invalid library found in C:\Users\owner\Documents\Arduino\libraries\SdFat:

now instead of giving me the error above it says

I’m sure that there was more to the message than that.

Take a screen shot of your libraries folder and post it.

PaulS:
I’m sure that there was more to the message than that.

Take a screen shot of your libraries folder and post it.

Heres the code im running

// UTFT_SdRaw_320x240_Demo
// Copyright (C)2015 Graham Lawrence (GHLawrence2000). All Rights reserved.
// web: GitHub - ghlawrence2000/UTFT_SdRaw: Hi speed image loading from SD/Serial for UTFT. UTFT_tinyFAT replacement.
//
// This program is a demo of how to use the functions provided by UTFT_SdRaw.
//
// This program requires the UTFT, UTouch, UTFT_Buttons and SdFat libraries.
//

#include <SPI.h>
// SdFat lib from here :-
// https://github.com/greiman/SdFat/archive/master.zip
#include <SdFat.h>
#include <UTFT.h>
#include <UTouch.h>
#include <UTFT_Buttons.h>
#include <UTFT_SdRaw.h>
extern uint8_t SmallFont;
extern uint8_t BigFont;

#define SD_CHIP_SELECT 53 // SD chip select pin
// file system object
SdFat sd;
// print stream
ArduinoOutStream cout(Serial);

int wait = 2, pressed_button;

// Initialize display
// ------------------
// Set the pins to the correct ones for your development board
// -----------------------------------------------------------
// Standard Arduino Uno/2009 Shield : ,19,18,17,16
// Standard Arduino Mega/Due shield : ,38,39,40,41
// CTE TFT LCD/SD Shield for Arduino Due : ,25,26,27,28
// Teensy 3.x TFT Test Board : ,23,22, 3, 4
// ElecHouse TFT LCD/SD Shield for Arduino Due : ,22,23,31,33
//
// Remember to change the model parameter to suit your display module!

UTFT myGLCD(ITDB32S, 38, 39, 40, 41);

// Initialize touchscreen
// ----------------------
// Set the pins to the correct ones for your development board
// -----------------------------------------------------------
// Standard Arduino Uno/2009 Shield : 15,10,14, 9, 8
// Standard Arduino Mega/Due shield : 6, 5, 4, 3, 2
// CTE TFT LCD/SD Shield for Arduino Due : 6, 5, 4, 3, 2
// CTE TFT LCD/SD Shield for Arduino Due (JP10): 6, 5,32, 3, 2
// Teensy 3.x TFT Test Board : 26,31,27,28,29
// ElecHouse TFT LCD/SD Shield for Arduino Due : 25,26,27,29,30
//

UTouch myTouch( 6, 5, 4, 3, 2);

UTFT_SdRaw myFiles(&myGLCD);
UTFT_Buttons myButtons(&myGLCD, &myTouch);

void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(115200);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.println(F(“Initialising SD card…”));
bool mysd = 0;
// see if the card is present and can be initialized:
while (!mysd)
{
if (!sd.begin(SD_CHIP_SELECT, SPI_FULL_SPEED)) {
Serial.println(F(“Card failed, or not present”));
Serial.println(F(“Retrying…”));
}
else
{
mysd = 1;
Serial.println(F(“Card initialised.”));
}
}
Serial.println(F(“Initialising LCD.”));
myGLCD.InitLCD();
myGLCD.clrScr();
myGLCD.setFont(SmallFont);
myTouch.InitTouch();
myTouch.setPrecision(PREC_MEDIUM);
myButtons.setTextFont(BigFont);
int butskip = myButtons.addButton( 85, 219 , 70, 20, “Skip”);
Serial.println(F(“LCD initialised.”));
// ////////////////////////////////////////////////////////////////////////////////
// Wait for GPS screen or skip button
///////////////////////////////////////////////////////////////////////////////////
Serial.println(F(“Initialising GPS.”));
long mytime = millis();
myFiles.load(0, 0, 240, 240, “wait4gps.RAW”, 1 , 1);
long mytime1 = millis() - mytime;
cout << F(“Time to draw 240x240 raw “) << mytime1 << F(” ms”) << endl;
myButtons.drawButton(butskip);
while (wait == 2) {
pressed_button = myButtons.checkButtons();
if (pressed_button == butskip)
{
cout << F(“Skip button detected (No GPS :frowning: )\n”);
wait = true;
}
}
char fname240 = “SK45/SK400500.RAW”;
myGLCD.clrScr();
mytime = millis();
myFiles.load(0, 0, 240, 240, fname240, 1);
mytime1 = millis() - mytime;
cout << F(“Time to draw 240x240 raw (no extra buffer) (non inverted colour) “) << mytime1 << F(” ms”) << endl;
delay(5000);
mytime = millis();
myFiles.load(0, 0, 240, 240, fname240, 8, 1);
mytime1 = millis() - mytime;
cout << F(“Time to draw 240x240 raw (8*buffer) (inverted colour) “) << mytime1 << F(” ms”) << endl;
delay(5000);
mytime = millis();
myFiles.pan(0, 0, 240, 240, 0, 0, 4040, 4040, “SK45/SK45.RAW”);
mytime1 = millis() - mytime;
cout << F(“Time to draw 240x240 portion from 4040x4040 raw image (non inverted colour) “) << mytime1 << F(” ms”) << endl;
delay(5000);
mytime = millis();
myFiles.pan(0, 0, 240, 240, 0, 0, 4040, 4040, “SK45/SK45.RAW”, 1);
mytime1 = millis() - mytime;
cout << F(“Time to draw 240x240 portion from 4040x4040 raw image (inverted colour) “) << mytime1 << F(” ms”) << endl;
delay(5000);
myGLCD.clrScr();
int xad, yad;
int tmpx = 0, tmpy = 0;
for (int yx = 0; yx < 6; yx++)
{
int xd = 0, yd = 0;
mytime = millis();
for (int z = 0 + (yx * 35); z < 35 + (yx * 35); z++)
{
tmpy = (z / 22);
tmpx = z - (tmpy * 22);
yad = (tmpy * 69) + 10;
xad = (tmpx * 108) + 44;
myFiles.pan(xd, yd, 42, 42, xad, yad, 2374, 696, “icons.raw”);
xd += 42;
if (xd > 277)
{
xd = 0;
yd += 42;
}
}
mytime1 = millis();
cout << F(“Time to draw 35 42x42 icons (”) << (0 + (yx * 35)) << “-” << (34 + (yx * 35)) << F(") from 2374x696 image “) << (mytime1 - mytime) << F(” ms") << endl;
delay(5000);
}
cout << F(“Thanks for watching!”) << endl;
myGLCD.clrScr();
myGLCD.setFont(BigFont);
myGLCD.setColor(VGA_GREEN);
myGLCD.print(“Thanks for watching!”, CENTER, 111);
}

void loop()
{
}

Heres the error message:

Arduino: 1.6.7 (Windows 8.1), Board: “Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)”

C:\Users\owner\AppData\Local\Temp\arduino_df93af2e13536909b61c021532509bb7\sketch_mar02a.ino:13:19: fatal error: SdFat.h: No such file or directory

#include <SdFat.h>

^

compilation terminated.

exit status 1
Error compiling.
Invalid library found in C:\Users\owner\Documents\Arduino\libraries\SdFat: C:\Users\owner\Documents\Arduino\libraries\SdFat
Invalid library found in C:\Users\owner\Documents\Arduino\libraries\SdFat: C:\Users\owner\Documents\Arduino\libraries\SdFat

This report would have more information with
“Show verbose output during compilation”
enabled in File > Preferences.

Screenshot of libraries

We need to see what is in the SdFat folder in the libraries directory.