See 
PublishedAPI for packages intended to be used by Plugin and Contrib authors, or 
browse all packages.
See also 
Developing plugins, 
Developer's Bible, 
Technical Overview
  internal package Foswiki::Store::PlainFile  is a Foswiki::Store 
Single-file implementation of 
Foswiki::Store that uses normal
files in a standard directory structure to store versions.
 
-  Webs map to directories; webs only "exist" if they contain a     WebPreferences topic.
-  Latest revs for topics are in data/.../TopicName.txt. If there     is no .txt for a topic, the topic does not exist, even if there     is a history.
-  Topic histories are in data/.../TopicName,pfv/ 
-  Each rev of the topic has a numbered file containing the text of that        rev (1 2 .. N), each with a corresponding metafile 1.m 2.m .. N.m
 
-  Latest attachments are in pub/.../TopicName/attach.ment 
-  Attachment histories are in        data/.../topic,pfv/ATTACHMENTS/attach.ment/
-  Same as a topic, each rev of an attachment has a numbered file        containing the data for that rev, each with a corresponding        metafile N.m
-  The latest rev of an attachment always has a history file        (note: this means that all attachments are stored at least         twice; same as in the RCS stores)
 
-  'date' always comes from the file modification date
-  'author' and 'comment' come from the metafile
-  'version' comes from the name of the version file
Note that .m metafiles currently only contain the CUID of the contributor.
Other metadata is stored embedded in topic text.
A note on character encodings. This store is designed to work best when
data is stored using UTF-8, but you can also use an alternate encoding by
setting {Store}{Encoding}. Conversion to/from the alternate
encoding is done at the lowest possible level - before calling file-level
operations.
NOTE: Perl's low-level file operations treat file names as sequences of
bytes. When a function such as 'open' is called and is passed a unicode
string, 'open' interprets that string as a string of bytes. As such it is
not strictly necessary to change the encoding of strings passed to these
low-level functions unless {Store}{Encoding} is set to something other
than 'utf-8'.