File.hpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:5k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2003 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. #ifndef FILE_H
  14. #define FILE_H
  15. #include <ndb_global.h>
  16. /**
  17.  * This class provides a file abstraction . It has operations
  18.  * to create, read, write and delete a file.
  19.  *
  20.  * @version #@ $Id: File.hpp,v 1.5 2002/04/26 13:15:38 ejonore Exp $
  21.  */
  22. class File_class
  23. {
  24. public:
  25.   /**
  26.    * Returns true if the file exist.
  27.    *
  28.    * @param aFileName a filename to check.
  29.    * @return true if the file exists.
  30.    */
  31.   static bool exists(const char* aFileName);      
  32.   /**
  33.    * Returns the size of a file.
  34.    *
  35.    * @param f a pointer to a FILE descriptor.
  36.    * @return the size of the file.
  37.    */
  38.   static long size(FILE* f);
  39.   /**
  40.    * Renames a file.
  41.    *
  42.    * @param currFileName the current name of the file.
  43.    * @param newFileName the new name of the file.
  44.    * @return true if successful.
  45.    */
  46.   static bool rename(const char* currFileName, const char* newFileName);
  47.   /**
  48.    * Removes/deletes a file.
  49.    *
  50.    * @param aFileName the file to remove.
  51.    * @return true if successful.
  52.    */
  53.   static bool remove(const char* aFileName);      
  54.   
  55.   /**
  56.    * Default constructor.
  57.    */
  58.   File_class();
  59.   /**
  60.    * Creates a new File  with the specified filename and file mode. 
  61.    * The real file itself will not be created unless open() is called!
  62.    *
  63.    * To see the available file modes use 'man 3 fopen'.
  64.    *
  65.    * @param aFileName a filename.
  66.    * @param mode the mode which the file should be opened/created with, default "r".
  67.    */
  68.   File_class(const char* aFileName, const char* mode = "r");
  69.   /**
  70.    * Destructor.
  71.    */
  72.   ~File_class();
  73.   /**
  74.    * Opens/creates the file. If open() fails then 'errno' and perror() 
  75.    * should be used to determine the exact failure cause.
  76.    *
  77.    * @return true if successful. Check errno if unsuccessful.
  78.    */
  79.   bool open();
  80.   /**
  81.    * Opens/creates the file with the specified name and mode.
  82.    * If open() fails then 'errno' and perror() should be used to 
  83.    * determine the exact failure cause.
  84.    *
  85.    * @param aFileName the file to open.
  86.    * @param mode the file mode to use.
  87.    * @return true if successful. Check errno if unsuccessful.   
  88.    */
  89.   bool open(const char* aFileName, const char* mode);
  90.   /**
  91.    * Removes the file.
  92.    *
  93.    * @return true if successful.
  94.    */
  95.   bool remove();
  96.   /**
  97.    * Closes the file, i.e., the FILE descriptor is closed.
  98.    */
  99.   bool close();
  100.   /**
  101.    * Read from the file. See fread() for more info.
  102.    *
  103.    * @param buf the buffer to read into.
  104.    * @param itemSize the size of each item. 
  105.    * @param nitems read max n number of items.
  106.    * @return 0 if successful.
  107.    */
  108.   int read(void* buf, size_t itemSize, size_t nitems) const;
  109.   /**
  110.    * Read char from the file. See fread() for more info.
  111.    *
  112.    * @param buf the buffer to read into.
  113.    * @param start the start index of the buf.
  114.    * @param length the length of the buffer.
  115.    * @return 0 if successful.
  116.    */
  117.   int readChar(char* buf, long start, long length) const;  
  118.   /**
  119.    * Read chars from the file. See fread() for more info.
  120.    *
  121.    * @param buf the buffer to read into.
  122.    * @return 0 if successful.
  123.    */
  124.   int readChar(char* buf);  
  125.   /**
  126.    * Write to file. See fwrite() for more info.
  127.    *
  128.    * @param buf the buffer to read from.
  129.    * @param itemSize the size of each item. 
  130.    * @param nitems write max n number of items.
  131.    * @return 0 if successful.
  132.    */
  133.   int write(const void* buf, size_t itemSize, size_t nitems);     
  134.   /**
  135.    * Write chars to file. See fwrite() for more info.
  136.    *
  137.    * @param buf the buffer to read from.
  138.    * @param start the start index of the buf.
  139.    * @param length the length of the buffer.
  140.    * @return 0 if successful.
  141.    */
  142.   int writeChar(const char* buf, long start, long length);   
  143.   /**
  144.    * Write chars to file. See fwrite() for more info.
  145.    *
  146.    * @param buf the buffer to read from.
  147.    * @return 0 if successful.
  148.    */
  149.   int writeChar(const char* buf); 
  150.   /**
  151.    * Returns the file size.
  152.    *
  153.    * @return the file size.
  154.    */
  155.   long size() const;
  156.   /**
  157.    * Returns the filename.
  158.    *
  159.    * @return the filename.
  160.    */
  161.   const char* getName() const;
  162.   /**
  163.    * Flush the buffer.
  164.    *
  165.    * @return 0 if successful.
  166.    */
  167.   int flush() const;
  168. private:
  169.   STATIC_CONST( MAX_FILE_NAME_SIZE = 128 );
  170.   FILE* m_file;
  171.   char m_fileName[MAX_FILE_NAME_SIZE];
  172.   const char* m_fileMode;
  173.   /* Prohibit */
  174.   File_class (const File_class& aCopy);
  175.   File_class operator = (const File_class&); 
  176.   bool operator == (const File_class&);
  177. };
  178. #endif