31#include "../common/FmtNumber.h"
32#include "../common/FsApiConstants.h"
33#include "../common/FsDateTime.h"
34#include "../common/FsStructs.h"
45#define isDirSeparator(c) ((c) == '/')
55 if (c ==
'/' || c ==
'\\' || c ==
'"' || c ==
'*' || c ==
':' || c ==
'<' || c ==
'>' || c ==
'?' || c ==
'|')
59#if USE_EXFAT_UNICODE_NAMES
62 return 0X1F < c && c < 0X7F;
113#if DESTRUCTOR_CLOSES_FILE
142 return n > INT_MAX ? INT_MAX : n;
207 return file.
open(
this, path, O_RDONLY);
234 int fgets(
char *str,
int num,
char *delim =
nullptr);
372 bool ls(
print_t *pr, uint8_t flags, uint8_t indent = 0);
523 char *str = buf +
sizeof(buf);
533 return write(str, buf +
sizeof(buf) - str);
553 char buf[3 *
sizeof(Type) + 3];
554 char *str = buf +
sizeof(buf);
569 if (
sizeof(Type) < 4)
581 return write(str, &buf[
sizeof(buf)] - str);
610 return read(&b, 1) == 1 ? b : -1;
623 int read(
void *buf,
size_t count);
749 bool timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute,
782 return write(str, strlen(str));
804 size_t write(
const void *buf,
size_t count);
806#if USE_EXFAT_UNICODE_NAMES
813 bool open(
const char *path,
int oflag = O_RDONLY);
889#include "../common/ArduinoFiles.h"
bool lfnLegalChar(ExChar_t c)
Definition ExFatFile.h:53
ExFatPartition include file.
ExChar16_t ExChar_t
Definition ExFatTypes.h:39
char * fmtDouble(char *str, double num, uint8_t prec, bool altFmt)
Definition FmtNumber.cpp:262
char * fmtBase10(char *str, uint16_t n)
Definition FmtNumber.cpp:163
int oflag_t
Definition FsApiConstants.h:45
const uint8_t EXFAT_ATTRIB_DIRECTORY
Definition FsStructs.h:360
const uint8_t EXFAT_ATTRIB_READ_ONLY
Definition FsStructs.h:356
const uint8_t EXFAT_ATTRIB_ARCHIVE
Definition FsStructs.h:361
const uint8_t EXFAT_ATTRIB_HIDDEN
Definition FsStructs.h:357
const uint8_t EXFAT_ATTRIB_SYSTEM
Definition FsStructs.h:358
Print print_t
Definition SysCall.h:66
Basic file class.
Definition ExFatFile.h:95
bool rmdir()
Definition ExFatFileWrite.cpp:411
static const uint8_t FILE_ATTR_COPY
Definition ExFatFile.h:866
static const uint8_t FILE_ATTR_READ_ONLY
Definition ExFatFile.h:851
bool isWritable() const
Definition ExFatFile.h:345
size_t printName(print_t *pr)
Definition ExFatFilePrint.cpp:171
bool getWriteError() const
Definition ExFatFile.h:289
bool isBusy()
Definition ExFatFile.cpp:200
bool getAccessDateTime(uint16_t *pdate, uint16_t *ptime)
Definition ExFatFile.cpp:110
bool rename(const char *newPath)
static const uint8_t FILE_FLAG_WRITE
Definition ExFatFile.h:870
bool remove(const char *path)
bool isReadOnly() const
Definition ExFatFile.h:325
bool open(ExFatFile *dirFile, ExName_t *fname, oflag_t oflag)
Definition ExFatFile.h:830
size_t printModifyDateTime(print_t *pr)
Definition ExFatFilePrint.cpp:160
size_t printFileSize(print_t *pr)
Definition ExFatFilePrint.cpp:140
static const uint8_t FILE_FLAG_CONTIGUOUS
Definition ExFatFile.h:872
int available()
Definition ExFatFile.h:139
size_t getName(char *name, size_t size)
bool exists(const ExChar_t *path)
Definition ExFatFile.h:204
uint8_t getError() const
Definition ExFatFile.h:268
bool seekEnd(int64_t offset=0)
Definition ExFatFile.h:696
uint32_t curCluster() const
Definition ExFatFile.h:835
bool sync()
Definition ExFatFileWrite.cpp:55
bool exists(const char *path)
uint8_t m_flags
Definition ExFatFile.h:886
bool preAllocate(uint64_t length)
Definition ExFatFileWrite.cpp:39
int fgets(char *str, int num, char *delim=nullptr)
Definition ExFatFile.cpp:62
uint8_t m_attributes
Definition ExFatFile.h:884
bool mkdir(ExFatFile *parent, const ExChar_t *path, bool pFlag=true)
Definition ExFatFileWrite.cpp:32
ExFatFile()
Definition ExFatFile.h:98
void rewind()
Definition ExFatFile.h:666
bool openNext(ExFatFile *dirFile, oflag_t oflag=O_RDONLY)
Definition ExFatFile.cpp:282
static const uint8_t FILE_ATTR_FILE
Definition ExFatFile.h:857
size_t printField(double value, char term, uint8_t prec=2)
Definition ExFatFile.h:520
ExFatVolume * m_vol
Definition ExFatFile.h:881
static const uint8_t FILE_ATTR_ARCHIVE
Definition ExFatFile.h:860
static const uint8_t FILE_ATTR_SUBDIR
Definition ExFatFile.h:859
bool truncate(uint64_t length)
Definition ExFatFile.h:765
static const uint8_t FILE_ATTR_HIDDEN
Definition ExFatFile.h:853
void fgetpos(fspos_t *pos) const
Definition ExFatFile.cpp:56
bool timestamp(uint8_t flags, uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second)
Definition ExFatFileWrite.cpp:564
uint8_t m_setCount
Definition ExFatFile.h:883
size_t write(const char *str)
Definition ExFatFile.h:780
bool getCreateDateTime(uint16_t *pdate, uint16_t *ptime)
Definition ExFatFile.cpp:126
bool rename(ExFatFile *dirFile, const char *newPath)
size_t printField(float value, char term, uint8_t prec=2)
Definition ExFatFile.h:541
size_t printCreateDateTime(print_t *pr)
Definition ExFatFilePrint.cpp:129
static const uint8_t FILE_FLAG_READ
Definition ExFatFile.h:869
static const uint8_t FILE_FLAG_APPEND
Definition ExFatFile.h:871
bool parsePathName(const ExChar_t *path, ExName_t *fname, const ExChar_t **ptr)
Definition ExFatFile.cpp:629
int read()
Definition ExFatFile.h:607
bool isContiguous() const
Definition ExFatFile.h:300
bool close()
Definition ExFatFile.cpp:31
bool isOpen() const
Definition ExFatFile.h:320
static const uint8_t FILE_ATTR_SYSTEM
Definition ExFatFile.h:855
uint64_t m_dataLength
Definition ExFatFile.h:877
bool remove()
Definition ExFatFileWrite.cpp:307
uint64_t fileSize() const
Definition ExFatFile.h:236
size_t printField(Type value, char term)
Definition ExFatFile.h:550
static const uint8_t FILE_ATTR_ROOT
Definition ExFatFile.h:862
bool seekSet(uint64_t pos)
Definition ExFatFile.cpp:817
bool syncDir()
Definition ExFatFileWrite.cpp:474
uint64_t validLength() const
Definition ExFatFile.h:771
bool isReadable() const
Definition ExFatFile.h:335
bool ls(print_t *pr)
Definition ExFatFilePrint.cpp:31
bool open(ExFatVolume *vol, const char *path, int oflag)
bool rename(const ExChar_t *newPath)
Definition ExFatFileWrite.cpp:44
void flush()
Definition ExFatFile.h:247
ExFatFile(const char *path, oflag_t oflag)
Definition ExFatFile.h:108
bool seekCur(int64_t offset)
Definition ExFatFile.h:687
uint64_t curPosition() const
Definition ExFatFile.h:178
uint32_t m_curCluster
Definition ExFatFile.h:879
size_t getName(ExChar_t *name, size_t size)
Definition ExFatFile.cpp:158
void clearWriteError()
Definition ExFatFile.h:157
uint64_t dataLength() const
Definition ExFatFile.h:184
bool addCluster()
Definition ExFatFileWrite.cpp:82
static const uint8_t WRITE_ERROR
Definition ExFatFile.h:845
bool addDirCluster()
Definition ExFatFileWrite.cpp:142
bool getModifyDateTime(uint16_t *pdate, uint16_t *ptime)
Definition ExFatFile.cpp:142
void clearError()
Definition ExFatFile.h:152
uint64_t m_validLength
Definition ExFatFile.h:878
uint8_t m_error
Definition ExFatFile.h:885
static const uint8_t FILE_ATTR_DIR
Definition ExFatFile.h:864
bool isHidden() const
Definition ExFatFile.h:315
uint8_t setCount() const
Definition ExFatFile.h:824
bool truncate()
Definition ExFatFileWrite.cpp:59
uint32_t m_firstCluster
Definition ExFatFile.h:880
bool isDir() const
Definition ExFatFile.h:305
bool open(ExFatFile *dirFile, const ExChar_t *path, oflag_t oflag)
Definition ExFatFile.cpp:215
bool isSubDir() const
Definition ExFatFile.h:340
size_t printAccessDateTime(print_t *pr)
Definition ExFatFilePrint.cpp:118
bool mkdir(ExFatFile *parent, const char *path, bool pFlag=true)
bool isRoot() const
Definition ExFatFile.h:330
DirPos_t m_dirPos
Definition ExFatFile.h:882
static const uint8_t FILE_FLAG_DIR_DIRTY
Definition ExFatFile.h:873
uint64_t available64()
Definition ExFatFile.h:147
bool contiguousRange(uint32_t *bgnSector, uint32_t *endSector)
Definition ExFatFile.cpp:39
uint32_t firstSector() const
Definition ExFatFile.cpp:99
bool openRootFile(ExFatFile *dir, const ExChar_t *name, uint8_t nameLength, oflag_t oflag)
Definition ExFatFile.cpp:295
void fsetpos(const fspos_t *pos)
Definition ExFatFile.cpp:104
uint32_t dirIndex() const
Definition ExFatFile.h:189
ExFatVolume * volume() const
Definition ExFatFile.h:839
static const uint8_t READ_ERROR
Definition ExFatFile.h:846
bool open(const char *path, int oflag=O_RDONLY)
static const uint8_t FILE_ATTR_CLOSED
Definition ExFatFile.h:849
bool open(ExFatFile *dir, const char *path, int oflag)
bool isFile() const
Definition ExFatFile.h:310
bool openRoot(ExFatVolume *vol)
Definition ExFatFile.cpp:612
uint64_t m_curPosition
Definition ExFatFile.h:876
int peek()
Definition ExFatFile.cpp:679
size_t write(uint8_t b)
Definition ExFatFile.h:788
~ExFatFile()
Definition ExFatFile.h:114
exFAT volume.
Definition ExFatVolume.h:35
exFAT file with Arduino Stream.
Definition ExFatFile.h:895
ExFile openNextFile(oflag_t oflag=O_RDONLY)
Definition ExFatFile.h:902
StreamFile class.
Definition ArduinoFiles.h:64
static bool value
Definition DigitalPin.h:210
Internal type for position in directory file.
Definition ExFatTypes.h:49
uint32_t position
Definition ExFatTypes.h:53
Internal type for file position - do not use in user apps.
Definition ExFatFile.h:83
uint64_t position
Definition ExFatFile.h:85
uint32_t cluster
Definition ExFatFile.h:87
Internal type for file name - do not use in user apps.
Definition ExFatFile.h:71
size_t len
Definition ExFatFile.h:73
const ExChar_t * lfn
Definition ExFatFile.h:75
Definition FsStructs.h:133