directoryEntry Struct Reference

FAT short directory entry. More...

`#include <FatStructs.h>`

## Public Attributes

uint8_t | attributes
uint16_t | creationDate
uint16_t | creationTime
uint8_t | creationTimeTenths
uint32_t | fileSize
uint16_t | firstClusterHigh
uint16_t | firstClusterLow
uint16_t | lastAccessDate
uint16_t | lastWriteDate
uint16_t | lastWriteTime
uint8_t | name [11]
uint8_t | reservedNT

## Detailed Description

FAT short directory entry.

Short means short 8.3 name, not the entry size.

Date Format. A FAT directory entry date stamp is a 16-bit field that is basically a date relative to the MS-DOS epoch of 01/01/1980. Here is the format (bit 0 is the LSB of the 16-bit word, bit 15 is the MSB of the 16-bit word):

Bits 9-15: Count of years from 1980, valid value range 0-127 inclusive (1980-2107).

Bits 5-8: Month of year, 1 = January, valid value range 1-12 inclusive.

Bits 0-4: Day of month, valid value range 1-31 inclusive.

Time Format. A FAT directory entry time stamp is a 16-bit field that has a granularity of 2 seconds. Here is the format (bit 0 is the LSB of the 16-bit word, bit 15 is the MSB of the 16-bit word).

Bits 11-15: Hours, valid value range 0-23 inclusive.

Bits 5-10: Minutes, valid value range 0-59 inclusive.

Bits 0-4: 2-second count, valid value range 0-29 inclusive (0 - 58 seconds).

The valid time range is from Midnight 00:00:00 to 23:59:58.

## Member Data Documentation

## attributes

uint8_t directoryEntry::attributes

Entry attributes.

The upper two bits of the attribute byte are reserved and should always be set to 0 when a file is created and never modified or looked at after that. See defines that begin with DIR_ATT_.

## creationDate

uint16_t directoryEntry::creationDate

Date file was created.

## creationTime

uint16_t directoryEntry::creationTime

Time file was created.

## creationTimeTenths

uint8_t directoryEntry::creationTimeTenths

The granularity of the seconds part of creationTime is 2 seconds so this field is a count of tenths of a second and its valid value range is 0-199 inclusive. (WHG note - seems to be hundredths)

## fileSize

uint32_t directoryEntry::fileSize

32-bit unsigned holding this file's size in bytes.

## firstClusterHigh

uint16_t directoryEntry::firstClusterHigh

High word of this entry's first cluster number (always 0 for a FAT12 or FAT16 volume).

## firstClusterLow

uint16_t directoryEntry::firstClusterLow

Low word of this entry's first cluster number.

## lastAccessDate

uint16_t directoryEntry::lastAccessDate

Last access date. Note that there is no last access time, only a date. This is the date of last read or write. In the case of a write, this should be set to the same date as lastWriteDate.

## lastWriteDate

uint16_t directoryEntry::lastWriteDate

Date of last write. File creation is considered a write.

## lastWriteTime

uint16_t directoryEntry::lastWriteTime

Time of last write. File creation is considered a write.

## name

uint8_t directoryEntry::name[11]

Short 8.3 name.

The first eight bytes contain the file name with blank fill. The last three bytes contain the file extension with blank fill.

## reservedNT

uint8_t directoryEntry::reservedNT

Reserved for use by Windows NT. Set value to 0 when a file is created and never modify or look at it after that.

The documentation for this struct was generated from the following file:

- Arduino/libraries/SdFat/src/FatLib/FatStructs.h