FileStream.h
Go to the documentation of this file.
1 /****
2  * Sming Framework Project - Open Source framework for high efficiency native ESP8266 development.
3  * Created 2015 by Skurydin Alexey
4  * http://github.com/SmingHub/Sming
5  * All files of the Sming Core are provided under the LGPL v3 license.
6  *
7  * FileStream.h
8  *
9  ****/
10 
11 #pragma once
12 
13 #include "ReadWriteStream.h"
14 #include "FileSystem.h"
15 
21 {
22 public:
24  {
25  }
26 
32  {
33  open(fileName, openFlags);
34  }
35 
37  {
38  close();
39  }
40 
45  void attach(file_t file, size_t size);
46 
49  {
50  return open(fileName, openFlags);
51  }
52 
59  bool open(const String& fileName, FileOpenFlags openFlags = eFO_ReadOnly);
60 
63  void close();
64 
65  StreamType getStreamType() const override
66  {
67  return eSST_File;
68  }
69 
70  size_t write(const uint8_t* buffer, size_t size) override;
71 
72  int read() override
73  {
74  char c;
75  return readBytes(&c, 1) ? static_cast<unsigned char>(c) : -1;
76  }
77 
78  size_t readBytes(char* buffer, size_t length) override;
79 
80  uint16_t readMemoryBlock(char* data, int bufSize) override;
81 
82  int seekFrom(int offset, SeekOrigin origin) override;
83 
84  bool isFinished() override
85  {
86  return fileIsEOF(handle);
87  }
88 
92  String fileName() const;
93 
97  bool fileExist() const
98  {
99  return handle >= 0;
100  }
101 
102  String getName() const override
103  {
104  return fileName();
105  }
106 
107  bool isValid() const override
108  {
109  return fileExist();
110  }
111 
115  size_t getPos() const
116  {
117  return pos;
118  }
119 
123  size_t getSize() const
124  {
125  return size;
126  }
127 
131  int available() override
132  {
133  return size - pos;
134  }
135 
136  String id() const override;
137 
142  {
143  return lastError;
144  }
145 
150  bool truncate(size_t newSize);
151 
155  bool truncate()
156  {
157  return truncate(pos);
158  }
159 
160 private:
165  bool check(int res)
166  {
167  if(res >= 0) {
168  return true;
169  }
170 
171  if(lastError >= 0) {
172  lastError = res;
173  }
174  return false;
175  }
176 
177 private:
178  file_t handle = -1;
179  size_t pos = 0;
180  size_t size = 0;
181  int lastError = SPIFFS_OK;
182 };
int available() override
Return the maximum bytes available to read, from current position.
Definition: FileStream.h:131
void attach(file_t file, size_t size)
Attach this stream object to an open file handle.
bool attach(const String &fileName, FileOpenFlags openFlags=eFO_ReadOnly)
Definition: FileStream.h:48
int read() override
Read one character and moves the stream pointer.
Definition: FileStream.h:72
bool fileExist() const
Determine if file exists.
Definition: FileStream.h:97
int seekFrom(int offset, SeekOrigin origin) override
Change position in stream.
bool open(const String &fileName, FileOpenFlags openFlags=eFO_ReadOnly)
Open a file and attach this stream object to it.
int length()
Return the total length of the stream.
Definition: DataSourceStream.h:134
bool isValid() const override
Determine if the stream object contains valid data.
Definition: FileStream.h:107
int getLastError()
determine if an error occurred during operation
Definition: FileStream.h:141
signed short file_t
File handle.
Definition: FileSystem.h:23
The String class.
Definition: WString.h:136
size_t write(const uint8_t *buffer, size_t size) override
Write chars to stream.
void close()
Close file.
String getName() const override
Returns name of the resource.
Definition: FileStream.h:102
File stream class.
Definition: FileStream.h:20
SeekOrigin
Stream/file seek origins.
Definition: SeekOrigin.h:18
FileStream(const String &fileName, FileOpenFlags openFlags=eFO_ReadOnly)
Create a file stream.
Definition: FileStream.h:31
bool fileIsEOF(file_t file)
Check if at end of file.
#define SMING_DEPRECATED
Definition: sming_attr.h:30
StreamType getStreamType() const override
Get the stream type.
Definition: FileStream.h:65
bool isFinished() override
Check if all data has been read.
Definition: FileStream.h:84
Read only file.
Definition: FileSystem.h:27
size_t getPos() const
Get the offset of cursor from beginning of data.
Definition: FileStream.h:115
#define SPIFFS_OK
Definition: spiffs.h:16
StreamType
Data stream type.
Definition: DataSourceStream.h:26
File data stream.
Definition: DataSourceStream.h:29
size_t readBytes(char *buffer, size_t length) override
Read chars from stream into buffer.
~FileStream()
Definition: FileStream.h:36
uint16_t readMemoryBlock(char *data, int bufSize) override
Read a block of memory.
bool truncate()
Truncate file at current position.
Definition: FileStream.h:155
size_t getSize() const
Get the total file size.
Definition: FileStream.h:123
Base class for read/write stream.
Definition: ReadWriteStream.h:19
String id() const override
Returns unique id of the resource.
String fileName() const
Filename of file stream is attached to.
FileOpenFlags
File open flags.
Definition: FileSystem.h:26
FileStream()
Definition: FileStream.h:23