AngelScript

file object

Path: /sdk/add_on/scriptfile/

This object provides support for reading and writing files.

Register with `RegisterScriptFile(asIScriptEngine*)`.

If you do not want to provide write access for scripts then you can compile the add on with the define AS_WRITE_OPS 0, which will disable support for writing. This define can be made in the project settings or directly in the header.

## Public C++ interface

    class CScriptFile
    {
    public:
      // Constructor
      CScriptFile();

      // Memory management
      void AddRef() const;
      void Release() const;

      // Opening and closing file handles
      // mode = "r" -> open the file for reading
      // mode = "w" -> open the file for writing (overwrites existing files)
      // mode = "a" -> open the file for appending
      int Open(const std::string &filename, const std::string &mode);
      int Close();

      // Returns the size of the file
      int GetSize() const;

      // Returns true if the end of the file has been reached
      bool IsEOF() const;

      // Reads a specified number of bytes into the string
      int ReadString(unsigned int length, std::string &str);

      // Reads to the next new-line character
      int ReadLine(std::string &str);

      // Reads a signed integer
      asINT64  ReadInt(asUINT bytes);

      // Reads an unsigned integer
      asQWORD  ReadUInt(asUINT bytes);

      // Reads a float
      float    ReadFloat();

      // Reads a double
      double   ReadDouble();

      // Writes a string to the file
      int WriteString(const std::string &str);

      int WriteInt(asINT64 v, asUINT bytes);
      int WriteUInt(asQWORD v, asUINT bytes);
      int WriteFloat(float v);
      int WriteDouble(double v);

      // File cursor manipulation
      int GetPos() const;
      int SetPos(int pos);
      int MovePos(int delta);

      // Determines the byte order of the binary values (default: false)
      // Big-endian = most significant byte first
      bool mostSignificantByteFirst;
    };

## Public script interface

      class file
      {
        int      open(const string &in filename, const string &in mode);
        int      close();
        int      getSize() const;
        bool     isEndOfFile() const;
        int      readString(uint length, string &out str);
        int      readLine(string &out str);
        int64    readInt(uint bytes);
        uint64   readUInt(uint bytes);
        float    readFloat();
        double   readDouble();
        int      writeString(const string &in string);
        int      writeInt(int64 value, uint bytes);
        int      writeUInt(uint64 value, uint bytes);
        int      writeFloat(float value);
        int      writeDouble(double value);
        int      getPos() const;
        int      setPos(int pos);
        int      movePos(int delta);
        bool     mostSignificantByteFirst;
      }

## Script example

      file f;
      // Open the file in 'read' mode
      if( f.open("file.txt", "r") >= 0 )
      {
          // Read the whole file into the string buffer
          string str;
          f.readString(f.getSize(), str);
          f.close();
      }